説明
has_shortcode() は、文字列中に、指定したショートコードが含まれているかを判定する関数です。
基本構文
has_shortcode( string $content, string $tag ): bool
引数
$content:検索対象の文字列$tag:ショートコードの名前
戻り値
含まれていれば true。
使い方(サンプル)
global $post;
if ( has_shortcode( $post->post_content, 'hello' ) ) {
wp_enqueue_style( 'hello-style' );
}
注意点
- ショートコードを使うページだけCSS・JSを読み込む用途でよく使います。
実務での使いどころ
- 投稿に、特定のショートコードが、含まれるときだけ、CSSやJavaScriptを、読み込むとき。
よくあるミスと対処
- 投稿の本文だけが、対象。ウィジェットや、カスタムフィールド、テンプレートの中の、ショートコードは、検出できない。
wp_enqueue_scriptsの中で、$postが、未設定のまま使い、nullの確認がない。- ショートコードが、登録されていないとき、
falseになる(登録のタイミングに、注意する)。
NG例
wp_enqueue_script( 'my-form' ); // すべてのページで、読み込まれる
OK例
add_action( 'wp_enqueue_scripts', function () {
global $post;
if ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'contact' ) ) {
wp_enqueue_script( 'my-form', get_theme_file_uri( '/js/form.js' ), array(), '1.0.0', true );
}
} );
使い分け早見表
| 関数 | 役割 |
|---|---|
has_shortcode() |
文字列に、ショートコードが含まれるかを確認する |
shortcode_exists() |
ショートコードが、登録されているかを確認する |
has_block() |
文字列に、ブロックが含まれるかを確認する |
関連項目
shortcode_exists()、add_shortcode()
公式リファレンス:has_shortcode() | Function | WordPress Developer Resources

コメント