web-dev-qa-db-ja.com

変数にショートコードが含まれているとdo_shortcode()は機能しません。ショートコードが文字列として渡れた場合は機能します。

私はプラグインを開発しています。その機能の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%確信しています。なぜこれがうまくいかないのですか?

2
Pizaul

そうではないと確信していても、手動で渡している値が$shortの値と同じではないように思えます。

$shortvar_dump($short);)の内容をダンプして、生成されたページのソースを見てください。レンダリングされたブラウザビューに表示されないタグや他の文字が変数に含まれている可能性が高いです。

1
ndm

$short変数の文字列が、[header]のように角括弧で囲まれていることを確認してください。そのように保存されていない場合は、このように呼び出しますecho do_shortcode('['.$short.']');

1
Radu Dragomir