WordPress ショートコードで好きなPHPファイルを挿入できるコードをアレンジ
この記事は約 4 分で読めます。
いつだったか、興味本位で、PHPファイルをショートコードで、記事内に挿入して表示させたいと思って、以下の記事のコードを、そのまんまコピペして試したところ、何も表示されませんでした。(コピペ好きなわたしには、よくあることです。)
How to Develop a PHP File Include Plugin for WordPressそれで、へろへろ調べて、以下のようにコードを修正して、functions.php
に追記したところ、PHPファイルをうまく表示できました。
function fuji_shortcode_gaibufile_purun($params = array()) {
extract(shortcode_atts(array(
'file' => 'chiwa'
), $params));
ob_start();//バッファリングを開始
require_once( $_SERVER['DOCUMENT_ROOT'] . '/favo-file/'. esc_attr($file) .'.php' );
$output_string = ob_get_contents();//バッファの内容を変数($output_string)に代入
ob_end_clean();//バッファの中身を削除
return $output_string;
}
//ショートコード登録
add_shortcode('purun_jikkou', 'fuji_shortcode_gaibufile_purun');
上記の例だと、ルート直下にfavo-file
という、ディレクトリを作って、そこに好きなPHPファイルを格納してます。
★この記事は、2016年6月23日 21:46:40 に、五行易ドットJP の 藤山 恭江が書いたものです。
記事の引用は、著作権法に定める範囲内で大歓迎です\(^o^)/
引用する場合、出典元の表示として『 五行易ドットJP:WordPress ショートコードで好きなPHPファイルを挿入できるコードをアレンジ 』←『』内の表示をお願いしますm(_ _)m
読んでいただいてうれしいです。ありがとうございます(≧▽≦)
require_once( $_SERVER['DOCUMENT_ROOT'] . '/favo-file/'. esc_attr($file) .'.php' );
ファイルの名前まで、esc_attr($file)
で、無害化(サニタイズ)しなくても、いいのかも、、、なんですが、念のためやっておりますです。
それと、わたしはできるだけ、WordPress のファイルのある場所を隠したい、という方針なので、WordPress が設置されている場所とは、ぜんぜん違う別の場所に、PHPファイルを格納するディレクトリを置いてるので、こんなパスになってます。
ちなみに、コデックスを見ると、このような隠ぺいによるセキュリティというのは、なんだか微妙…みたいですね。
隠蔽によるセキュリティつかいかたは、例えば、挿入したい好きなPHPファイルがkonchiwa.php
の場合、[purun_jikkou file=konchiwa]
といったように、ファイル名を指定してショートコードを、書きます。
ということで、require_once
とか、$_SERVER['DOCUMENT_ROOT']
なんてのは使わずに、そのかわりに以下の記事のように
get_template_part($file);
これで、挿入したいPHPファイルを、子テーマのディレクトリ内に入れておけますよ。
WordPressで子テーマ使用時にショートコードで記事本文中に任意のテンプレートを読み込む方法(リンク切れ)
挿入したいファイルの拡張子が、.php
じゃなくて、.html
とかだったら、以下の記事のコードで、バッチリ表示できます。