プラグインを使わず WordPress の投稿ページで PHP の外部ファイルを呼び出す方法
WordPress の投稿ページ・固定ページでは、PHP のコードを記載することができません。
プラグインを導入すれば利用できるものの、ソースコードがファイルではなく データベース での管理になるため、WordPress 上でしかコード修正ができないデメリットがあります。
そこでプラグインを使わなくても汎用的に PHP の処理を呼び出せるように、ショートコードを用いて次の実装を行います。
- ショートコードで PHP を呼び出す
- 対象は「外部 PHP ファイル」
- 引数(パラメータ)を渡すことが可能
- 処理結果は画面に出力できる
ショートコードとは?
WordPress の functions.php に定義された関数を、投稿画面で呼び出すための [] で囲まれたコード。今回紹介する方法を使わず、全てショートコードで実装してしまうのも手段の1つ。
記事内で外部 PHP ファイルを呼び出す方法
一気に全て実装したものを紹介すると理解するのが難しくなるので、1つずつ段階を踏んで説明していきます。
- functions.php へ定義するショートコード
- 投稿画面での呼び出し方
- パラメータを設定した場合の取得方法
functions.php へ定義するショートコード
//------------------------------ // 記事内に PHP ファイルを呼び出す //------------------------------ function call_myphp( $atts = array() ) { // パラメータに file がある場合に処理 if( $atts['file'] ) { $phpfilename = $atts['file'] . '.php'; // 呼び出しファイルのパラメータを設定(必要あれば) if( isset( $atts['paramname'], $atts['paramval'] ) ) { $paramnamelist = explode( ',', $atts['paramname'] ); $paramvallist = explode( ',', $atts['paramval'] ); $idx = 0; foreach ($paramnamelist as $plist) { if( isset( $plist, $paramvallist[$idx] ) ){ $_GET[ $plist ] = $paramvallist[$idx]; } $idx++; } } // 外部ファイル呼び出し(結果はそのまま画面に出力) ob_start(); // 呼び出しファイル格納先は wp-content フォルダ直下の php フォルダ内 include( WP_CONTENT_DIR . "/php/$phpfilename" ); return ob_get_clean(); } } // ショートコードとして登録 add_shortcode('myphp', 'call_myphp');
呼び出される PHP ファイルの場所は、wp-content フォルダの直下に php フォルダを用意して、そこに格納する想定で作っています。
wp-content\php\(ここにファイルを格納)
もし WordPress 上で編集したいのであれば、テーマフォルダ内に PHP フォルダを作成した上で格納すると良いでしょう。その際は、26行目でファイルを指定している部分のパスを書き換えてください。
上記関数において利用している引数は次の3つです。
- file ……… PHP のファイル名(拡張子なし)
- paramname … ファイルに送るパラメータの名前
- paramval … ファイルに送るパラメータの値
関数の呼び出し引数を配列で処理しているので、上記以外の引数を設定してもエラーになることはありません。
ショートコードの呼び出し方法
<!-- パラメータなしでファイル test01.php を呼び出す --> [myphp file=test01] <!-- パラメータありでファイル test02.php を呼び出す --> [myphp file=test03 paramname=cd paramval=1024] <!-- 複数のパラメータありでファイル test03.php を呼び出す --> [myphp file=test02 paramname=a,b,c,d paramval=1,2,3,4]
PHP ファイルを呼び出すと、そこに記述された PHP のプログラム処理が実行されます。もし WordPress のテーマファイルのように html を記述していれば、html を出力することも可能です。
パラメータ渡しの仕組み
17行目にある $_GET にて、呼び出される PHP プログラムへパラメータ値を渡す設定をしています。ショートコードでの呼び出し時に、パラメータの名前と値をそれぞれカンマ区切りで渡すことで、上記の処理において PHP ファイルにデータとして渡せる仕組みになっています。
一方、呼び出された PHP ファイルでは、次のように記載すれば渡されたパラメータ値が取得できます。
$param = $_GET['パラメータ名'];
呼び出された外部の PHP ファイルは functions.php 上で処理されます。そのため、WordPress 固有の関数を使うこともできます。これで投稿ページで表現できる内容も増えるのではないでしょうか。