私はプラグインを開発しています。その機能の1つは、カスタムフィールド内のショートコードを変更することによって特定のページのフォームを切り替えることです。
私のプラグインファイル内で:
function getShort()
{
global $post;
$m = get_post_meta($post->ID, 'short', true);
return $m;
}
私のテーマファイル内:
$short = getShort();
echo do_shortcode($short);
上記のコードでは、ショートコードを表示するだけです。 $ shortの値をエコーしたら、それをコピーしてdo_shortcode()の引数として貼り付けると、期待値が表示されます。
$ shortの値が文字列で、正しい形式のショートコードであることを100%確信しています。なぜこれがうまくいかないのですか?
そうではないと確信していても、手動で渡している値が$short
の値と同じではないように思えます。
$short
(var_dump($short);
)の内容をダンプして、生成されたページのソースを見てください。レンダリングされたブラウザビューに表示されないタグや他の文字が変数に含まれている可能性が高いです。
$short
変数の文字列が、[header]
のように角括弧で囲まれていることを確認してください。そのように保存されていない場合は、このように呼び出しますecho do_shortcode('['.$short.']');