プラグインを使わず WordPress の投稿ページで PHP の外部ファイルを呼び出す方法

公開日:

WordPress の投稿ページ・固定ページには、直接 PHP のコードを記載することができません。

プラグインを導入すれば利用できるようになりますが、ソースコードがデータベース管理になるため、WordPress 上でしかコード修正ができないデメリットがあります。

そこで汎用的に PHP の処理を呼び出せるように、ショートコードを用いて次の実装を行います。

  • ショートコードで PHP を呼び出す
  • 対象は「外部 PHP ファイル」
  • 引数(パラメータ)を渡すことが可能
  • 処理結果は画面に出力できる

ショートコードとは?

WordPress の functions.php に定義された関数を、投稿画面で呼び出すための [] で囲まれたコード。今回紹介する方法を使わず、全てショートコードで実装してしまうのも手段の1つ。

記事内で外部 PHP ファイルを呼び出す方法

一気に全て実装したものを紹介すると理解するのが難しくなるので、1つずつ段階を踏んで説明していきます。

  1. functions.php へ定義するショートコード
  2. 投稿画面での呼び出し方
  3. パラメータを設定した場合の取得方法

functions.php へ定義するショートコード

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 フォルダを作成した上で格納すると良いでしょう。その際は、18行目でファイルを指定している部分のパスを書き換えてください。

上記関数において利用している引数は次の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 を出力することも可能です。

後者のパラメーター渡しについては「test02.php?cd=1024」のような呼び出しを実現しています。それぞれカンマ区切りで値を指定することで「test03.php?a=1&b=2&c=3&d=4」のように複数のパラメータを渡すことも可能になっています。

一方で、呼び出された PHP ファイルでパラメータ値は次のように記載すれば取得できます。

パラメータ値取得方法 (呼び出された PHP ファイル)
$param = $_GET['パラメータ名'];

呼び出された PHP ファイルは functions.php 上で処理されるため、WordPress 固有の関数を使うこともできます。これで投稿ページで表現できる内容も増えるのではないでしょうか。

このブログの運営者

NJ

元システムエンジニアから、個人事業主として独立。Web サイト運営、動画制作など活動の場を広げています。このブログでは、困ってたどり着いた人に、分かりやすく答えを提供できるように心掛けています。

更新情報は、Twitter や Facebook ページを参照ください。フォローお待ちしています。

Facebook ページ NJ-CLUCKER
このブログが役に立ったら
「いいね!」お願いします