子テーマの使用を前提に、記事内やテキストウィジェットでPHPファイルを使えるようにする

この記事は約3分で読めます。

2017-03-11WordPressカスタマイズ

「テキストウィジェットに PHPの実行コード 書いても 動かないよ~」「それ、 WordPressの 仕様だから  でも方法はあるわ」「何々? どんな!?」「PHPファイルを テキストウィジェットに インクルードするの  一旦設定しちゃえば ショートコードで できるわ」

本記事ではPHPファイルをインクルードしてウィジェット化する方法を紹介します。
以下は子テーマの使用を前提に記します。
この方法を知っていると、サイドバーへのテキストウィジェット設置のみならず、トップページレイアウトの幅も広がります。

導入例

サイドバーウィジェット

本サイトで仕様しているテーマLuxeritasには関連記事のサイドバーウィジェットがありません。
そのためテーマから記事末尾の関連記事コードを抜き出し、ウィジェット化しています。

トップページレイアウト

本サイトを御覧下さい。

もしレイアウトが変わっていた場合は、こちらのスクリーンショットを。

各カテゴリをウィジェット化して、固定ページに貼り付けています。
コード直接さわるよりも柔軟性あっていい感じです。

導入方法

1.ショートコードを使えるようにする

既にしている方は飛ばして下さい。
funcitons.phpに次の記述をします。

add_filter('widget_text', 'do_shortcode');

2.子テーマにファイルフォルダを作る

別に作らなくてもいいのですが、あった方が整理に便利だと思います。
ここではmyphpfilesという名前にします。

3.インクルードできるようにする

functions.phpに次のコードを記述します。

function Include_my_php($params = array()) {
 extract(shortcode_atts(array(
 'file' => 'default'
 ), $params));
 ob_start();
 include(STYLESHEETPATH . "/myphpfiles/$file.php"); 
 return ob_get_clean();
} 
add_shortcode('myphp', 'Include_my_php'); 

4.先のコードをPHPファイルにする

ここではhoge.phpという名前にしておきます。
テキストファイルに先のコードを記述し、UTF-8形式・拡張子PHPで保存。
FTPなどで、myphpfilesフォルダにアップします。

5.テキストウィジェットを設置し、ショートコードを記述する

ショートコード[myphp file=’hoge’]を記述します。
”[”は半角に変えて下さい。

まとめ

解答者の写真

この方法を紹介している記事は多いんだけど、やってみたけど動かないという人もいると思う。
それは、
include(get_theme_root() . ‘/’ . get_template() . “/$file.php”);
になってるから。
これだと親テーマのフォルダにPHPファイルをアップしないと動かないの。
子テーマのフォルダに入れるなら、次が正解。
include(STYLESHEETPATH . “/myphpfiles/$file.php”);

本当に便利だから試してみてね!