add_shortcode()
は、WordPressでショートコードを登録するためのテンプレートタグです。ユーザーが投稿やページで簡単にカスタムコンテンツを挿入できるようにします。
機能の説明
add_shortcode()
は、特定のショートコードを登録し、そのショートコードが呼ばれた際に実行する関数を紐づけます。これにより、WordPressの投稿やページで短いコードを記述するだけで複雑な処理やHTMLを表示することが可能です。
シンプルなコード例
function hello_world_shortcode() {
return '<p>Hello, World!</p>';
}
add_shortcode('hello', 'hello_world_shortcode');
この例では、[hello]
というショートコードを使うと「Hello, World!」というテキストが表示されます。
使い方の解説
add_shortcode()
を使うことで、ショートコード名と実行する関数を紐づけます。関数の戻り値がショートコードの出力として表示されるため、HTMLや他のデータを簡単に投稿やページに挿入できます。
引数
- $tag
-
ショートコードの名前を指定します。投稿やページに
[shortcode_name]
の形式で記述します。 - $callback
-
ショートコードが呼ばれた際に実行する関数名を指定します。関数は文字列を返す必要があります。
戻り値
- 成功時
-
true
(ショートコードが正常に登録された場合) - 失敗時
-
false
(ショートコードの登録に失敗した場合)
オプション
add_shortcode()
自体にはオプションはありませんが、紐づける関数で引数を受け取ることができます。
ショートコード引数の例
function custom_message_shortcode($atts) {
$atts = shortcode_atts(array(
'message' => 'デフォルトのメッセージ'
), $atts);
return '<p>' . esc_html($atts['message']) . '</p>';
}
add_shortcode('message', 'custom_message_shortcode');
[message message="こんにちは"]
と記述することで、「こんにちは」というテキストが表示されます。
使用例
function alert_box_shortcode($atts) {
$atts = shortcode_atts(array(
'type' => 'info',
'text' => 'これは通知です。'
), $atts);
return '<div class="alert ' . esc_attr($atts['type']) . '">' . esc_html($atts['text']) . '</div>';
}
add_shortcode('alert', 'alert_box_shortcode');
このコードでは、[alert type="warning" text="警告です!"]
と記述することで、警告の通知ボックスが表示されます。
一緒に使うことが多い関連タグ
do_shortcode()
do_shortcode()
は、PHPコード内でショートコードを実行するために使用されます。
echo do_shortcode('[hello]');
このコードでは、[hello]
というショートコードがPHP内で実行され、Hello, World!
が表示されます。
shortcode_atts()
shortcode_atts()
は、ショートコードのデフォルト引数を設定するために使われます。これにより、引数が未指定の場合にデフォルト値が適用されます。
追加情報を取得したい場合
add_shortcode()
でショートコードを作成する際、do_shortcode()
を使うことでテーマファイル内でもショートコードを実行することが可能です。
do_shortcode() で取得できる情報
$content = do_shortcode('[message message="こんにちは"]');
echo $content;
出力できる情報
- HTML: ショートコードが返すHTMLコンテンツ
- 変数の値: ショートコードに渡した引数の値
想定されるトラブル
ショートコードが表示されない
ショートコードの登録が正しく行われていない。
解決策
add_shortcode()
の記述が正しいか確認してください。
引数が適用されない
shortcode_atts()
が正しく使用されていないか、引数名が間違っている。
解決策
引数名が一致しているか確認し、shortcode_atts()
でデフォルト値を設定しましょう。
Q&A
ショートコード内でPHPの変数を使えますか?
はい、可能です。関数内でグローバル変数を利用するか、引数として値を渡します。
複数のショートコードを一つの関数にまとめることはできますか?
可能ですが、関数内で$tag
引数をチェックし、処理を分岐させる必要があります。
まとめ
add_shortcode()
は、WordPressでカスタムショートコードを登録し、投稿やページ内で簡単に再利用可能なコンテンツを表示するための強力なツールです。複数の引数を持たせたり、do_shortcode()
と組み合わせることで柔軟な実装が可能です。