has_shortcode() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました