WordPress | ショートコードの登録から複数の引数の受け渡し方法

2023-02-21WordPress カスタマイズ,WordPress

WordPress | ショートコードの登録から複数の引数の受け渡し方法

記事内、カテゴリページやウィジェットでPHPなんかを動かしたい時に利用できるショートコードの使い方です。

ショートコードの登録

WordPressのショートコードを登録する関数add_shortcode()を利用します。
今回はサンプルとしてmyFunction()というPHP関数をtestという名前で新規ショートコードとして登録しまてみす。

function myFunction(){
	ob_start();
	echo 'HELLO WordPress';
	return ob_get_clean();
}

// ショートコードの登録
add_shortcode('test', 'myFunction');

add_shortcode()は第一引数にショートコード名、第二引数に実行する関数名を指定します。

サンプルコードの例ではtestというショートコード名が呼び出された時、myFunction()が実行されるようになっています。

ショートコードの使い方

記事内、カテゴリページやウィジェット内で登録したショートコードを使う(登録してあるPHP関数を呼び出す)記述です。

[test]

登録されていないショートコード名だった場合はそのまま表示されます。

※ウィジェット内でショートコードを使える様にするには「functions.php」に以下を記述しておく必要があります。

// ウィジェットでショートコードを有効化
add_filter('widget_text', 'do_shortcode');

ショートコードから引数を送る

ショートコードから実行する関数に引数を送る場合は以下の様に記述します。因数にはキー名と値を指定します。

[test keyname="こんにちわ"]

ショートコードの関数で引数を受け取る際のシンプルな関数を用意してみます。引数は配列として受け取り格納されている事に注意してください。

function myFunction($data){
	ob_start();
	echo $data[keyname];
	return ob_get_clean();
}

// ショートコードの登録
add_shortcode('test', 'myFunction');

このままだとキー名が違っていたり、値が空だった場合にPHPエラーとなるので、空だった場合のデフォルト値を指定します。

※キー名に大文字は使えないので注意です。

function myFunction($data){
	ob_start();
	extract(shortcode_atts(array(
		'keyname' => 'デフォルト値',
	), $data));
	echo $keyname;
	return ob_get_clean();
}

// ショートコードの登録
add_shortcode('test', 'myFunction');

ショートコードから複数の引数を送る

ショートコードから複数の引数を送信する記述です。半角スペースで開けてキー名と値を指定していきます。

[test keyname1="こんにちわ" keyname2="こんばんわ"]

関数で複数の引数を受け取る場合の記述は以下の様になります。

function myFunction($data){
	ob_start();
	extract(shortcode_atts(array(
		'keyname1' => 'デフォルト値1',
		'keyname2' => 'デフォルト値2',
	), $data));
	echo $keyname1.$keyname2;
	return ob_get_clean();
}

// ショートコードの登録
add_shortcode('test', 'myFunction');

参考:関数リファレンス/shortcode atts – WordPress Codex 日本版