【簡単】wordpressのショートコードを使って、投稿記事内にphpファイルを呼び出す方法

wordpressの投稿記事内にphpファイルを呼び出したい。
また、投稿記事によって呼び出すファイルの内容を変更したい。
このような悩みを解決します。
functions.phpにショートコードを呼び出す関数を記述
//ショートコードを使ったphpファイルの呼び出し方法
function shortcode_php($params = array())
{
extract(shortcode_atts(array(
'file' => 'default',
// バナー
'bnr' => '',
), $params));
ob_start();
include(get_theme_root() . '/' . get_template() . "/ショートコードで呼び出したいファイルまでのルート(テーマ内)");
return ob_get_clean();
}
add_shortcode('myphp', 'shortcode_php');
上記コードをfunctions.phpに記述します。
shortcode_attsの配列内で、ショートコードに属性を設定する事ができます。
たとえば、記事によって呼び出すphpファイルの中身を変えたい場合、属性を指定すれば簡単に条件分岐できます。
属性の使い方は次章で説明します。
今回は例として、bnr(バナー)の属性を配列に追記してます。
include関数内にショートコードで呼び出したいphpファイルまでのパスを記述します。
get_theme_root関数とget_template関数を使う事でテーマ内のファイルまでのパスを取得できます。
add_shortcode関数内で、ショートコードで呼び出したい名前を登録します。今回は「myphp」と登録します。
呼び出したいphpファイルを作成する
<!-- バナー属性の値がbnr01だったら -->
<?php if ($bnr == "bnr01") : ?>
<div class="bnr01">
<img src="./img/bnr01.jpg" alt="bnr01">
</div>
<!-- バナー属性の値がbnr02だったら -->
<?php elseif ($bnr == "bnr02") : ?>
<div class="bnr02">
<img src="./img/bnr02.jpg" alt="bnr02">
</div>
<!-- それ以外 -->
<?php else : ?>
<div class="bnr">
<img src="./img/bnr.jpg" alt="bnr03">
</div>
<?php endif; ?>
次に呼び出したいphpファイルを作成します。
上記コードは例として、前章で追加した属性(bnr)の値が○○だったら○○のバナーを記事内にいれるという条件分岐処理を指定しています。
実際に呼び出したいコードを任意で作成しましょう。
ショートコードを記述
[myphp bnr =bnr01]
最後に実際にwordpress記事内でショートコードを記述してphpファイルが呼び出されるか確認してみましょう。
ショートコードを呼び出す時は[]を使い中にfunctions.phpで登録したショートコード名を入れます。
属性を登録した方はショートコード名の後にスペースを空け、属性と値を入れる事ができます。
今回は例として、bnr =bnr01と入れました。
なので前章で記述した【バナー属性の値がbnr01だったら】とコメントアウトしてる部分の条件分岐内コードが出力されます。
以上で記事内にphpファイルを呼び出す事が出来るようになりました。
まとめ
通常はphpを記事内に入れる事ができないですが、ショートコードを使えば簡単に挿入する事ができます。
今回実装した例のように、記事によって広告バナーの種類を変えたい・且つバナーは固定で用意されてるものを出力できるようにしたい時にショートコードはとても便利です。
以上で解説を終わります。