お問い合わせはコチラから

WordPressのショートコードの中でショートコードは呼べる?⇒呼べます

WordPressのショートコードの中で別のショートコードを呼ぶことをできるのだろうか?

そう思った切っ掛けは、

広告などのショートコードを条件によって呼び分けたい、例えばカテゴリやタグなどを条件として呼び出すショートコードを切り替えられたら便利じゃないか

と思いました。

なぜなら、Cocoonには便利なショートコードが複数用意されていて、例えば、広告やランキングなどは管理画面で設定すればショートコードとして呼び出すことができるからです。

この記事では、Wordpressのショートコードの中で別のショートコードを呼ぶのは本当にできるのか?という疑問に答えたいと思います。

結論から言います。

WordPressのショートコードの中で別のショートコードを呼ぶのは出来ます。

ショーコードの中でショートコードを呼ぶ記述

PHPでショートコードを呼ぶときは、do_shortcodeで呼べばいいのは少し調べればすぐにわかります。

WordPressのショートコード内部では、echoをつけてdo_shortcodeすれば大丈夫です。

ただし、ob_start()とob_get_clean()が必要です。

大事なところなので繰り返します。

  • echo do_shortcode(‘[ショートコード1]’)
  • ob_start()で出力をバッファ
  • ob_get_clean()でバッファ出力&バッファクリア
add_shortcode( 'hogehoge', function () {
ob_start(); // バッファを有効に
if (条件判定){
echo do_shortcode('[ショートコード1]');
}else{
echo do_shortcode('[ショートコード2]');
}
return ob_get_clean();
} );

 

まとめ

WordPressのショートコード内でショートコードを呼び出すことができるようになると、ウィジェットエリアにショートコードを配置しておいて、記事のカテゴリやタグなどの条件で呼び出すショートコードを切り替えるといった使いかたも出来ます。

そうすると、ウィジェットエリアが一つでもショートコードを切り替えることができるのでとても捗ります。

タイトルとURLをコピーしました