サイトアイコン あみだがみねのもろもろ備忘録

[WordPress] 投稿記事中でPHPコード実行 (Exec-PHPでエラー)

投稿記事中でPHPコードを実行する方法。

Exec-PHPプラグインを使えば、記事内にPHPコードを直接埋め込むことで、簡単にPHPコードを実行できましたが、しばらく更新がない間に、PHP7.xでエラーがでるようになって使えなくなってしまいました。

重大なエラーを引き起こしたため、プラグインを有効化できませんでした。
Parse error: syntax error, unexpected ‘new’ (T_NEW) in /XXX/…/wp-content/plugins/exec-php/exec-php.php on line 22


1. ショートコード

代わりにWordPressのショートコードの機能を使えば良いです。
functions.php“に以下のコードを加えて…

// functions.php
function printHello() {
	return "Hello, Shortcode!";
}
add_shortcode('hello', 'printHello');

上で作ったショートコードを記事中に埋め込めば良いです。

<!-- 投稿記事 -->
[Hello]

“Hello, Shortcode!”と表示されます。


2. ショートコード関数の引数

引数も取れます。引数は配列に格納されて渡されます。(引数がひとつの場合でも)

// functions.php
function printHello($atts) {
	return "Hello, " . $atts[0] . "! " . $atts[1];
}
add_shortcode('hello', 'printHello');
<!-- 投稿記事 -->
[hello "にゃんこ" "猫缶どうぞ"]

“Hello, にゃんこ! 猫缶どうぞ”と表示されます。


3. ショートコード関数の引数 (連想配列)

引数は連想配列としても取れます。

// functions.php
function printHello($atts) {
	return "Hello, " . $atts['name'] . "! " . $atts['message'];
}
add_shortcode('hello', 'printHello');
<!-- 投稿記事 -->
[hello name="にゃんこ" message="猫缶どうぞ"]

“Hello, にゃんこ! 猫缶どうぞ”と表示されます。


4. 文字列出力時の注意点

上記の例では、ショートコード関数が文字列を返すことによって、文字列出力しています。
ショートコード関数内で、echoやprintやincludeなどで直接文字列出力する場合はバッファリングする必要があります。
(そうしないと表示があさってに行く場合があります。)

くわしくはこちら → 👉 [WordPress] ショートコードからの文字列出力位置がおかしい


5. ウィジェットでショートコードを実行する

また、ウィジェットでショートコードを実行したい場合は、”functions.php“に以下のコードを加えておきます。

// functions.php
add_filter('widget_text', 'do_shortcode');

このページはAMPページです。
👉元のページ(非AMPページ)を表示する
👉あみだがみねのもろもろ備忘録 TOPへ
モバイルバージョンを終了