記事一覧はこちら

wordpressでdo_shortcode()が同名再帰に失敗する対策

[quote font="program_" width="auto" source='ショートコード API - WordPress Codex 日本語版']ショートコードパーザーは、ハンドラ関数が再帰的に do_shortcode() を呼び出すことをサポートしていれば、ネストされたショートコードマクロを処理することができます。 [tag-a] [tab-b] [tag-c] [/tag-b] [/tag-a] しかし、ショートコードマクロが、同じ名前の別のマクロを囲むように使用すると、パースに失敗します。 [tag-a] [tag-a] [/tag-a] [/tag-a] これは、do_shortcode() で使われる文脈自由正規パーザーの制限です。非常に高速ですが、ネストの階層を数えることができません。そのため、この場合には各開始タグを正しい終了タグとマッチさせることができません。 [/quote] こうすればよい

$add_shortcode_quote=function($atts,$contents){
  return "xxx";
};
add_shortcode('quote',$add_shortcode_quote);
add_shortcode('quote2',$add_shortcode_quote);
add_shortcode('quote3',$add_shortcode_quote);