WordPressのphpファイル内にショートコードを使う方法。便利な関数do_shortcodeの使い方。

2021-08-20
Wordpress

PHPにショートコードを使う_006

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]を使ってみます。

PHPにショートコードを使う_5

twentytwentyoneの404ページ

こちらが404.phpが実際に表示された画面です。

ではテンプレートファイル404.phpでショートコードを呼び出してみます。

PHPにショートコードを使う_006

twentytwentyoneの404.php

普通にショートコード書いたらダメなの?
ということでありそうなコードも書いてみました。

1がショートコード直書き
2がショートコードをechoしてみるコード
3が今回のコードです。
PHPにショートコードを使う_007

do_shortcodeでショートコードが動作した

動作結果は見ての通りです。
1と2はありそうですが、そのままショートコードを吐いてしまいダメです。

まとめ

WordPressを構成するテーマphpでショートコードを呼び出す方法でした。

分かりやすくまとめるつもりがタラタラと書いてしまいました。
知っておけばなんてことは無いです。

テーマだけでなくプラグインのショートコードも問題なく使えますので、single.phpや404.phpなどのテンプレートファイルのカスタムにグンと幅が出ます・w・

-Wordpress
-

ありがとうございました。
良かったらシェアしてネ・w・

© 2022 ソロ学