WordPressの記事やテキストウィジェットの中でPHPを使えるようにする

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

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

質問者の写真

テキストウィジェットに PHPの実行コード 書いても 動かないよ~
 
解答者の写真
それWordPressの仕様だから
だけどPHPファイルをテキストウィジェットにインクルードしちゃえばショートコードで実行できるわ
一度設定すれば簡単よ
 

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

以下は子テーマの使用を前提に記します。

導入例

サイドバーウィジェット

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

トップページレイアウト

本サイトで用いていた過去のレイアウトです。
当時は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");

私もハマった1人。
当時の話ですが、どこのサイトの記事を見てもこうなってました。

動かない理由は、上記が「親テーマだけ」の使用を前提にしたコードだから。

解答者の写真
子テーマを使う場合、get_template()は親テーマのディレクトリを返しちゃうの
 

 

試しに親テーマにmyphpfilesフォルダを入れてみてください。
動きますので。

子テーマを使う場合はこちらが正解となります。

include(STYLESHEETPATH . "/myphpfiles/$file.php");

まとめ

解答者の写真
本当に便利だから試してみてね!
 
※当サイトの会話アイコンはカスタムキャストで作成しています。©2018-2019 Custom Cast, Inc.
この記事を書いた人:天満川 鈴

広島市内のパチンコホール勤務。
3号機時代からのパチンカス。

ADHD、精神障害者手帳3級所持。

慶應義塾大学商学部→国家一種経済職→公安調査庁。
在職時は国際テロ、北朝鮮を担当。

「小説家になろう」の底辺作者。
朝鮮総聯へのスパイ工作を描いた小説「キノコ煮込みに秘密のスパイスを」はアマチュア小説ながら週刊誌報道され、話題となった。

Posted by 天満川 鈴