ホームページ制作・印刷物デザイン・フォトレタッチ/名古屋を拠点としてトータルデザインのKNICK(ケニック)
プラグイン不要!投稿や固定ページの好きな場所にPHPファイルの設置や実行をさせる方法
2016年10月09日  ,

WordPressでのサイト制作時、無料・有料テーマを使っていると、特定の場所にPHPを実行させたい場面が出てくるかと思います。

 

 

PHPファイルに直接記述させる事が出来れば良いですが、それが中々できない場合もよくありがちです。

 

KNICKでもWordPressのカスタマイズの依頼を受ける事が多々あるのですが、最近ではトップページをページビルダーなどのプラグインを利用しサイト制作をされている場合も多く、その中にブログ一覧を新たに表示させたいなどのご要望もあります。

直接テンプレートにPHPを挿入できない場合などに活躍しそうです。

 

この方法を使えば、投稿ページや固定ページのお好きな箇所にショートコードでPHPファイルを実行させる事ができます。

 

そんな時の為に覚書。

 

まず、fanctions.phpに下記の内容をコピペします。

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

add_shortcode('myphp', 'Include_my_php');

 

次に実行したいPHPファイルを、投稿ページ、固定ページへショートコードで記載します。


Warning: include(/home/knick/knickweb.com/public_html/wp-content/themes/knick/sample.php): failed to open stream: No such file or directory in /home/knick/knickweb.com/public_html/wp-content/themes/knick/functions.php on line 35

Warning: include(): Failed opening '/home/knick/knickweb.com/public_html/wp-content/themes/knick/sample.php' for inclusion (include_path='.:/opt/php-7.4.28/data/pear') in /home/knick/knickweb.com/public_html/wp-content/themes/knick/functions.php on line 35

 

例えばsample.phpの内容を実行させたい場合はmyphp file=’sample’と記述します。

たったそれだけで、PHPファイルの実行が可能となります。

 

子テーマを使用されている場合は6行目の「get_template」は親テーマを返してしまいますので、

include(get_theme_root() . '/' . get_template() . "/$file.php");

上記を以下の様に変更しましょう。

get_template_part($file);
function Include_my_php($params = array()) {
extract(shortcode_atts(array(
'file' => 'default'
), $params));
ob_start();
get_template_part($file);
return ob_get_clean();
} 

add_shortcode('myphp', 'Include_my_php');

fanctions.phpを編集される場合は、くれぐれも注意して、必ずバックアップを取ることをおすすめします。
※自己責任にてお願いします。