【WordPress】自作のPHPファイルをショートコードとして使う

やりたいこと

自作のPHPファイルをショートコードとして呼び出して使用したい。

ただ呼び出すだけではなく、パラメータ(引数)を引き渡してコードの編集なしに多少のカスタマイズはできるようにしたい。

やりかた

以下の手順で実装します。

  • PHPファイルの置き場を作る
  • ショートコードとして使えるよう「functions.php」にコードを追加する

ファイル置き場を作る

WordPressの子テーマディレクトリ内に新しいフォルダーを作ります。
※作り方は契約しているサーバーによって変わります。

以下の場所に「myphpfiles」という名称で作成してください。

「wp-content」>「themes」>「子テーマ名」>「myphpfiles」
※ディレクトリ名を変更する場合は後述する貼り付けコード内のディレクトリ名も変更する必要があります。

注意

以後このブログで紹介するショートコードで利用可能なPHPファイルのコードは上記のフォルダー構成であることを前提としているため、強いこだわりがなければ上記の通りに作成することをお勧めします。

「functions.php」へのコード追記

テーマの「functions.php」にコードを記載する方法で実装します。

以下の場所から編集できます。
「Wordpress管理画面」>「外観」>「テーマファイルエディター」右側から編集するファイルを選択します。

以下のコードを「functions.php」に追記してください。

//phpファイルのインクルード
function Include_my_php($params = array()) {
	extract($params);
	ob_start();
	include(get_theme_file_path("/myphpfiles/$file.php")); 
	return ob_get_clean();
} 
add_shortcode('myphp', 'Include_my_php');

ショートコードとしてインクルードしたPHPファイルにパラメータ(引数)を疑似的に渡せるよう「shortcode_atts()」はあえて使っていません。

そのためショートコードの呼び出し時「file=””」に加えてパラメータ(引数)を指定すると、それもインクルードしたコードに渡されます。注意してください。

ショートコードの呼び出し方法

ウィジェットエリアにカスタム HTMLを設置し、以下のショートコードを記載します。

[myphp file="ファイル名"]

ショートコードの記載に拡張子(.php)は必要ありません。以下はファイル名が「test.php」の場合です。

ファイルの内容に沿ったものが表示されていればOKです。

参考