Programing

WordPressショートコード作成方法 投稿や固定ページ内でPHPプログラムを実行する方法

この記事では商品の紹介にアフィリエイト広告を利用しています 「広告について」

WordPressの投稿ページや固定ページの中で、WebAPIを利用して取得した情報でページを作成したり、ショートコードで記事に埋め込みする方法です

PHPで、WebAPIを呼び出して情報取得するわけですが、ショートコードを利用しますので、そのショートコードの作り方の備忘録です

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

WebAPIを使ってみようという内容の記事はこちらですので、参考にしてください

ショートコードを自作して記事内でPHPを実行する方法

はじめはPHPでWebページを作成するようにして、WebAPIを使う試作プログラムを作ったのですが、WordPressの個別ページや投稿ページに組み込む方法を調べました

ショートコードを使うと、投稿ページや固定ページを編集するときにショートコードをページ内に書いておくことでページから呼び出してプログラムを実行できるようにできます

まずは、function.phpにPHPの関数を追加して、ショートコードで呼び出す方法を試してみました

WordPressのテーマで利用する関数群がテーマのフォルダにあるfunction.phpに記述されているわけですが、そのfunction.php内に追加でオリジナルのPHPの関数を記述することで、自分で作成したオリジナル関数を呼び出すことができます

WordPress 自作のショートコード追加の記述方法


function jisaku_shortcode() {
return "自作ショートコード表示テスト";
}
add_shortcode('jisaku', 'jisaku_shortcode');

function.phpに、jisaku_shortcode()というショートコードで呼び出す関数(function)を追加作成しておいて、add_shortcode()で、[jisaku]というショートコードでjisaku_shortcode()関数を呼び出すという関係を定義しておきます

これで、ページに[jisaku]とショートコードを記述しておくと、jisaku_shortcode()が実行されます

WordPress 自作のショートコードで関数を呼ぶ方法

自作PHPプログラムをショートコードで呼び出す

さらに、オリジナルのphpを作って、ワードプレスの使用中のテーマのフォルダにそのオリジナルphpをアップロードしておいて、functions.phpに下記のように記述してやると記事内にショートコードで [my_original_php file=’phpファイル名’]と書くことで、phpファイル名に書いたphpが実行されるようにできます


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

上記の方法で、ワードプレスの記事内から、phpを呼び出すようにすると、WordPressで、phpを埋め込んだ記事ページを作成することができます

これで、固定ページや投稿ページの記事内にPHPで作成する記事を挿入することができます

include(get_theme_root() . ‘/’ . get_template() . “/$file.php”);

と書いてありますが、オリジナルphpをアップロードする場所は、使用するテーマのインストール場所になります

WordPressのインストールフォルダ/wp-content/themes/テーマ名

です

ページ内に[original_php file=’自作phpファイル名’]と記述すると、ここに上げた自作のオリジナルphpを実行することができます

テーマを変えると場所が変わるので、この方法はちょっとメンテナンスがめんどうなので、あとでプラグイン化して対応するようにしていきます

ショートコードでパラメータをPHPに引き渡す方法

さらに、ショートコードで組み込んだ自作PHPプログラムにパラメータを引き渡す方法です

これもわりと簡単な記述で可能です

記事投稿のページ内で、WebAPIからの取得データを表示するphpをショートコードを埋め込んで実行し、取得結果を表示するようなときに、WebAPIに渡す検索クエリーなどのデータを自作PHP内の関数に引き渡します

引き渡し方法は、記事のURLの後ろにパラメータをくっつける方法や、記事タイトルを検索クエリーにする方法などで記事の外から渡す方法もあるのですが、ショートコード内にパラメータを記述することで、自作のオリジナルphpに引き渡し関数内で利用することができます

検索クエリーなどの引数となるパラメータを記事内に記述することができます

ショートコードを定義するコードを上述しましたが、パラメータの記述を付け加えます

下記のようにshort_php()の関数の中にパラメータを記述し、初期値を入れておきます


function shortcode_php($params = array()) {
extract(shortcode_atts(array(
'file' => 'default',
'query' => '',
'sort' => 0,
), $params));
ob_start();
include(get_theme_root() . '/' . get_template() . "/$file.php");
return ob_get_clean();
}
add_shortcode('my_original_php', 'shortcode_php');

この例では、queryとsortというパラメータを設定しました

そして、ショートコードでは

[my_original_php file=’phpファイル名’ query=’温泉’ sort=0]

というように記述します

ショートコードにパラメータの値を記述することで、phpに検索クエリーquery(温泉)とソート順sort(0)を投稿記事内から自作のphp内の関数に引き渡しています

これで、パラメータを渡された’phpファイル名’ の関数の中で、パラメータを利用した処理を行った結果を記事を埋め込むことができます

WordPress ショートコード作成方法 実施例

ショートコードを使った埋め込みの実例です

固定ページや投稿ページの記事内に記述してあるのはショートコードですが、WebAPIを使って取得した結果を表示しています

この例の場合、ショートコードに入れてあるパラメータは検索クエリーです

おすすめ

ぼっちたびWebAPI=おすすめ

WordPress ショートコード プラグイン化

ただし、ショートコードを記述して実行しているのですが、上記の関数実装方法とは異なっています

ショートコードから呼び出す関数はWordPressのプラグインにしています

プラグインにせずに、functions.phpを書き換えるという方法は、テーマが更新されたり、別のテーマにする際に手間がかかるので運用に適しません

WordPressのショートコードのプラグイン化のお試し版については、また別途書きます