shortcode_atts()
は、ショートコードで受け取る引数とデフォルトの属性をマージするためのテンプレートタグです。省略された引数にデフォルト値を割り当てることで、ショートコードを柔軟に扱えるようにします。
機能の説明
shortcode_atts()
は、ショートコードの属性(引数)をデフォルト値と結合して、ユーザーが指定しなかった属性にデフォルト値を適用します。これにより、ショートコードの省略可能な引数に対して、事前に指定した適切なデフォルト値がセットされます。
シンプルなコード例
<?php
function my_shortcode($atts) {
$atts = shortcode_atts(
array(
'title' => 'デフォルトタイトル',
'count' => 5,
),
$atts
);
return '<h2>' . esc_html($atts['title']) . '</h2>' .
'<p>カウント: ' . intval($atts['count']) . '</p>';
}
add_shortcode('my_shortcode', 'my_shortcode');
?>
この例では、my_shortcode()
のショートコードでtitle
とcount
という2つの引数を受け取り、shortcode_atts()
を使ってデフォルト値を設定しています。ショートコードが引数を指定しない場合、title
には「デフォルトタイトル」が、count
には5が適用されます。
使い方の解説
shortcode_atts()
は、ショートコードで引数を省略した場合に、開発者が指定したデフォルト値を適用するために使います。これにより、ショートコードをより柔軟に使用できるようになります。基本的に、配列形式でデフォルトの引数とユーザー指定の引数を渡します。
引数
$pairs
-
- デフォルトの属性を設定するための配列。
- 型: 配列
array( 'title' => 'デフォルトタイトル', 'count' => 5, )
$atts
-
- ショートコードで実際に渡される引数の配列。
- 型: 配列
array( 'title' => 'カスタムタイトル', )
$shortcode
-
- オプションのショートコード名。ショートコードコンテキストで使われることがあります。
- 型: 文字列
戻り値
- マージされた配列
-
$pairs
と$atts
を結合し、デフォルト値が上書きされた新しい配列。
オプション
shortcode_atts()
に関する特別なオプションはありませんが、esc_html()
やintval()
などのサニタイズ関数を使用することで、セキュリティを高めることが推奨されます。
使用例
<?php
function custom_button_shortcode($atts) {
$atts = shortcode_atts(
array(
'text' => 'クリックしてください',
'url' => '#',
),
$atts
);
return '<a href="' . esc_url($atts['url']) . '">' . esc_html($atts['text']) . '</a>';
}
add_shortcode('button', 'custom_button_shortcode');
?>
この例では、button
ショートコードがtext
とurl
の引数を受け取ります。text
やurl
が指定されていない場合、それぞれ「クリックしてください」と#
がデフォルトでセットされます。
一緒に使うことが多い関連タグ
add_shortcode()
add_shortcode()
は、カスタムショートコードを登録するための関数です。shortcode_atts()
と一緒に使用することで、引数のデフォルト値を設定し、ショートコードの利便性を向上させます。
<?php
add_shortcode('example', function($atts) {
$atts = shortcode_atts(array('name' => 'ゲスト'), $atts);
return 'こんにちは、' . esc_html($atts['name']) . 'さん!';
});
?>
この例では、example
というショートコードを定義し、name
という引数を受け取ります。引数が指定されない場合、「ゲスト」がデフォルトで適用されます。
追加情報を取得したい場合
get_shortcode_atts()
カスタムショートコード内で、特定の引数を取得・操作する際に使います。
<?php
function example_shortcode($atts) {
$atts = shortcode_atts(array('name' => 'ゲスト'), $atts);
return 'ようこそ、' . esc_html($atts['name']) . 'さん!';
}
add_shortcode('example', 'example_shortcode');
?>
出力できる情報
- name: ショートコードの引数で指定された名前
- count: ショートコードで指定された数値情報(省略時にデフォルト値)
想定されるトラブル
引数が正しく適用されない
ショートコード内のshortcode_atts()
で正しい配列構造が指定されていない可能性があります。
解決策
$pairs
と$atts
のキーが一致しているか確認しましょう。
サニタイズされていない引数の使用
URLやHTMLタグを含む引数が適切にサニタイズされていない場合、XSS攻撃のリスクがあります。
解決策
esc_html()
やesc_url()
を使って適切にサニタイズしましょう。
Q&A
まとめ
shortcode_atts()
は、ショートコードで渡される引数とデフォルトの属性を結合するための便利なテンプレートタグです。これにより、ショートコードの柔軟性が向上し、ユーザーが引数を指定しない場合でも適切なデフォルト値を適用できます。