説明
add_shortcode() は、ショートコードを登録する関数です。投稿本文に [タグ名] と書くと、指定した関数の出力に置き換わります。
基本構文
add_shortcode( string $tag, callable $callback ): void
引数
$tag:ショートコードの名前$callback:出力する文字列を返す関数
戻り値
戻り値はありません。
使い方(サンプル)
add_shortcode( 'hello', function( $atts ) {
$a = shortcode_atts( array( 'name' => 'World' ), $atts );
return 'Hello, ' . esc_html( $a['name'] ) . '!';
} );
注意点
- コールバックは出力(
echo)ではなく、文字列をreturnします。echoすると、表示位置がずれます。 - 属性は
shortcode_atts()で既定値を設定し、出力前にエスケープします。 initフックなどで登録します。
実務での使いどころ
- 記事の中に、
[contact]のような、短いタグを書くだけで、フォームや、ボタンなどを、表示できるようにするとき。 - 引数(属性)を、指定して、表示を、切り替えられるようにするとき。
よくあるミスと対処
- コールバックで、
echoしている。ショートコードは、値を、returnで返す。echoすると、出力が、ページの先頭に出る。 $attsを、配列だと、決めつけている。属性がないときは、空文字になる。shortcode_atts()で、整える。- 属性の値を、エスケープせずに、出力している。
- タグの名前に、使えない文字や、大文字を使っている。小文字の英数字・アンダースコアが、安全。
NG例
add_shortcode( 'hello', function ( $atts ) {
echo 'こんにちは'; // 出力が、ページの先頭に出る
} );
OK例
add_shortcode( 'hello', function ( $atts ) {
$atts = shortcode_atts( array( 'name' => 'ゲスト' ), $atts, 'hello' );
return '<p>こんにちは、' . esc_html( $atts['name'] ) . 'さん</p>';
} );
使い分け早見表
| 関数 | 役割 |
|---|---|
add_shortcode() |
ショートコードを、登録する |
do_shortcode() |
文字列の中の、ショートコードを、実行する |
remove_shortcode() |
ショートコードの登録を、解除する |
関連項目
do_shortcode()、shortcode_atts()、remove_shortcode()
公式リファレンス:add_shortcode() | Function | WordPress Developer Resources

コメント