普段、固定ページや投稿ページにPHPを使いたい場合、セキュリティの観点からExec-PHPの使用を避けPHP Code For Postsというプラグインを使用しています。
しかし、たまーにPHP Code For Postsが動かない不具合があります。
数時間PHP Code For Postsと格闘し結局
「もうええわ!ショートコード自作したほうがマシじゃ!!」
となりました。
目標。
テーマフォルダにtemplateフォルダを作成、その中にPHPファイルを入れてショートコードで呼び出す。
意外と簡単にできました。
functions.phpに記入
function short_php($params = array()) {
extract(shortcode_atts(array(
'file' => 'default'
), $params));
ob_start();
include(get_theme_root() . '/' . get_template() . "/template/$file.php");
return ob_get_clean();
}
add_shortcode('myphp1', 'short_php');
子テーマを使用している場合は以下のようにやります。
function short_php($params = array()) {
extract(shortcode_atts(array(
'file' => 'default'
), $params));
ob_start();
include(STYLESHEETPATH . "/template/$file.php");
return ob_get_clean();
}
add_shortcode('myphp1', 'short_php');
STYLESHEETPATHは子テーマのcssファイルまでのパスを取得しています。
フォルダ内にPHP追加
試しにomusubi.phpに
[code language=”languange”]<?php echo ‘テンプレートフォルダからのPHP出力’;
と記入しました。
投稿、または固定ページにショートコードを記入
記入方法は
[[myphp1 file=’omusubi’]]
と記入します。
file=””の中にphpファイルの名前を記入するだけでOKです。
以下はショートコードからの出力です。
[myphp1 file=’omusubi’]
動きましたね。
これで、プラグインに依存せず、PHPを投稿や固定ページで呼び出せるようになりました。
すごい便利。
参考にしたサイト
WordPress投稿ページにPHP利用→ショートコードを使おう!
【wordpress】投稿・固定ページ内にPHPファイルをインクルード(挿入/実行)させる
コメント