WordPressの記事内でphpを使う[ショートコード]

Wordpress

wordpressの記事内でphpが使えたら便利だと思いませんか?
ただwordpressでは、セキュリティーの観点からか直接エディター内でphpを使用することはできないようになっています。

もし、どうしてもphpで動的コンテンツを埋め込みたいっていう場合の代替え案として、そのコンテンツ部分を外部のファイルに作成して、それをショートコードとして記事内に読み込むという方法をご紹介します。

テーマのfanctions.phpへ簡単な設定を追加して、読み込ませたいファイルを指定箇所に配置するだけととても簡単な方法です。
是非確認してみてください。

自作ショートコードの作成方法

まず、ワードプレスのテーマ内、
fanctions.php内にショートコードの設定を記述します。

function Include_my_php($params = array()) {
    extract(shortcode_atts(array(
        'file' => 'default'
    ), $params));
    ob_start();
   include(get_theme_root() . '/' . get_template() . "/shortcode/$file.php");
    return ob_get_clean();
}
add_shortcode('onphp', 'Include_my_php');

このサンプルではテーマフォルダーの中にshortcodeというフォルダーを作ってそこに読み込むphpを配置することを想定しています。

もし、子テーマで使用する場合は6行目を下記「子テーマを使用する場合の記述」に書き換えます。

通常の記述

include(get_theme_root() . '/' . get_template() . "/shortcode/$file.php");


子テーマを使用する場合の記述

include(STYLESHEETPATH . "/shortcode/$file.php");

次に、記事内に読み込ませたいphpファイルを作成します。
ファイルの内容は割愛します。作成したファイルをテーマフォルダー内に作成した「shortcode」の中に配置します。
もし、配置したファイル名が「example.php」の場合、記事内でのショートコードの記述は下記になります。


Warning: include(/home/users/1/1arm024/web/blog/creator/wp-content/themes/cocoon-child-master/shortcode/example.php): failed to open stream: No such file or directory in /home/users/1/1arm024/web/blog/creator/wp-content/themes/cocoon-child-master/functions.php on line 52

Warning: include(): Failed opening '/home/users/1/1arm024/web/blog/creator/wp-content/themes/cocoon-child-master/shortcode/example.php' for inclusion (include_path='.:/usr/local/php/7.4/lib/php') in /home/users/1/1arm024/web/blog/creator/wp-content/themes/cocoon-child-master/functions.php on line 52

file=”の中に、拡張し部分を除いたファイル名を入れます。

これにより、example.phpの内容が記事内のコンテンツの一部として反映されます。