【WordPress】子テーマ使用時にショートコードで子テーマ内のテンプレートを読み込む場合
固定ページの任意の箇所でPHPファイルを実行したかったので、お馴染みのショートコードで対応しました。
まず、以下のコードを子テーマディレクトリに用意した「functions.php」に記載し、子テーマディレクトリ内に「myphpfiles」というフォルダを作成し、その中に読み込みたいPHPファイル(test.php)を作成しました。
function Include_my_php($params = array()) { extract(shortcode_atts(array( 'file' => 'default' ), $params)); ob_start(); include(get_theme_root() . '/' . get_template() . "/myphpfiles/$file.php"); return ob_get_clean(); } add_shortcode('myphp', 'Include_my_php');
これで固定ページの挿入したい箇所に、と入れてみたのですが、test.phpの内容は表示されず。
原因は単純に親テーマのディレクトリを参照してしまっているからです。
では子テーマのディレクトリを参照するにはどうすれば良いかというと、上記の6行目「include(get_theme_root() . ‘/’ . get_template() . “/myphpfiles/$file.php”);」の部分を「get_template_part(“/myphpfiles/$file”);」に変更します。
以下変更したもの。
function Include_my_php($params = array()) { extract(shortcode_atts(array( 'file' => 'default' ), $params)); ob_start(); get_template_part("/myphpfiles/$file"); return ob_get_clean(); } add_shortcode('myphp', 'Include_my_php');
これで子テーマディレクトリ内の「myphpfiles」を参照してくれるようになり、中にあるtest.phpがを配置した箇所に挿入されるようになりました。
タグ: WordPress | 2016年5月10日