WordPress ショートコード 書き方・使い方(2)


チビ子
属性のデフォルト値を設定
属性にデフォルト値を設定する方法を説明して行きます。
入力と結果
functions.php
function fnc_filename1 ($atts) {
$a = shortcode_atts (
array (
'file1' => "",
'file2' => "デフォルトファイル名",
), $atts, 'filename');
return 'ファイル名は' . $a['file1'] . 'と' . $a['file2'] . 'です';
}
add_shortcode('filename', 'fnc_filename1');
Wordpress投稿画面
[filename]
[filename file1="テスト" file2="チビ子"]
HTML出力結果
ファイル名はとデフォルトファイル名です
ファイル名はテストとチビ子です
解説
functions.php
$a = shortcode_atts (
2行目の『shortcode_atts』という関数が、始めて出てきました。
これが、属性に値が設定されていればそれを設定し、無ければデフォルト値を設定する関数です。
ここでは、”$a”に値を設定します。
array (
3行目の”array”は配列で、値を返すことを指定する関数です。
'file1' => "",
'file2' => "デフォルトファイル名",
4-5行目でデフォルト値の設定を行っています。
‘file1’には、何も設定していません。
‘file2’には、「デフォルトファイル名」としています。
), $atts, 'filename')
6行目は、’$atts’は引数である属性、’filename’は、投稿画面に入力するショートコード名です。
出力結果を比べてみてもらえば分かると思いますが、1行目のように、属性を何も指定せずにショートコードを呼ぶと、デフォルト値を設定しない’file1’は何も表示されず、’file2’にはデフォルト値が表示されます。
属性の設定を忘れたり、属性名(ここでは’file1’)のスペルを間違えるとデフォルト値が表示されます。
shortcode_atts( $pairs , $atts, $shortcode );
パラメータ
$pairs
(配列) (必須) サポートするすべての属性の名前とデフォルト値
初期値: なし
$atts
(配列) (必須) ユーザーがショートコードタグに指定した属性
初期値: なし
$shortcode
(文字列) (オプション) shortcode_atts_{$shortcode} フィルターに使われるショートコード名。これを指定すると、他のコードが属性をフィルターするために shortcode_atts_{$shortcode} フィルターを使用できます。このパラメータはオプションですが、互換性を最大にするため常に含めるべきです。
初期値: なし
戻り値
(配列) 結合されフィルターされた属性のリスト。
属性に何も設定されていない時に、表示したい値を設定するのが、本来の使い方です。
個人で使用するショートコードで、投稿後に必ず表示画面を確認するなら、デフォルト値の設定は必須ではありません。また、デフォルト値に、あえて長い文字列を設定し、入力ミスに気が付くようにするのも、一つの方法です。

チビ子
extract関数を使用した例
function fnc_filename2 ($atts) {
extract (shortcode_atts (
array (
'file1' => "",
'file2' => "デフォルトファイル名",
), $atts, 'filename'));
return 'ファイル名は' . $file1 . 'と' . $file2 . 'です';
}
add_shortcode('filename2', 'fnc_filename2');
extractという関数を使うと、shortcode_atts関数の連想配列に含まれる キー毎に変数にすることも可能になります。
return文を比べて見ると分かりますが、こちらの方がスッキリしています。