Wordpressを使っていてsingle.phpや404.phpなどのテーマを構成しているphpファイル「○○.php」でショートコードを使いたい場合のメモです。
投稿ページやウィジェットでは"[shortcode]"のように該当するコード名を記述すれば簡単にショートコードが呼び出せますが、テーマphpでショートコードを呼び出すには少し工夫が必要です。
do_shortcode()という便利な関数がありますのでこれを使います。
テーマphpでショートコードを呼び出す方法
Wordpressではテーマやプラグインのショートコードは"[]"を使えば、投稿ページやウィジェット内で簡単に呼び出すことが出来ます。
まずは使い方を簡単におさらいします・w・
例えば「WordPress Popular Posts」という人気記事を一覧表示するプラグインでは、[wpp]という専用のショートコードを使えば人気記事の一覧表示が行えます。
投稿ページでショートコードを使う
該当するショートコード名を角括弧で囲めばOKですね!
ウィジェットでショートコードを使う
こちらも同じですがウィジェットでショートコードが使えない場合があるかも...
そんな時はfunctions.phpに下記のコードを追記すれば使えるようになります。
(Wordpress4.9以降ではデフォルトで使えるようになっているはずです。)
funcitons.php
//ウィジェットでショートコードを使えるようにする
add_filter('widget_text', 'do_shortcode' );
ご存じかと思いますが、基本的な使い方はこんな感じです。
このようなショートコードはphpファイルからでも呼び出すことが出来ます。
投稿ページのテンプレートであるsingle.phpやNot Foundページのテンプレートである404.php、サイドバーに使うsidebar.phpなどのphpファイルです。
これらのphpファイル内でテーマ、プラグインのショートコードが呼び出せます。
ただ、php内でショートコードを呼び出すにはそのまま書いても上手くいきません。
テーマphpでショートコードを使う
テーマphpでショートコードを使うにはechoとdo_shortcodeを合わせて使います。
○○.php
<?php echo do_shortcode('[ショートコード名]'); ?>
このコードを書いた部分でショートコードが呼び出されます。
コードの詳細は下記のWordpressコードリファレンスにあります。
難しく書かれていますが、上記のコードで動きます。
コードの動作確認
今回は動作のサンプルとしてデフォルトテーマtwentytwentyoneの404.phpに先ほどの人気記事を表示するショートコード[wpp]を使ってみます。
こちらが404.phpが実際に表示された画面です。
ではテンプレートファイル404.phpでショートコードを呼び出してみます。
普通にショートコード書いたらダメなの?
ということでありそうなコードも書いてみました。
2がショートコードをechoしてみるコード
3が今回のコードです。
動作結果は見ての通りです。
1と2はありそうですが、そのままショートコードを吐いてしまいダメです。
まとめ
Wordpressを構成するテーマphpでショートコードを呼び出す方法でした。
分かりやすくまとめるつもりがタラタラと書いてしまいました。
知っておけばなんてことは無いです。
テーマだけでなくプラグインのショートコードも問題なく使えますので、single.phpや404.phpなどのテンプレートファイルのカスタムにグンと幅が出ます・w・