説明
has_block() は、投稿に、指定したブロックが含まれているかを判定する関数です。
基本構文
has_block( string $block_name, int|string|WP_Post|null $post = null ): bool
引数
$block_name:ブロック名(例:core/gallery)$post:投稿ID・本文・オブジェクト
戻り値
含まれていれば true。
使い方(サンプル)
if ( has_block( 'core/gallery' ) ) {
wp_enqueue_script( 'my-gallery' );
}
注意点
- ブロックが使われているページだけアセットを読み込む用途で使います。
実務での使いどころ
- 投稿に、特定のブロックが含まれるときだけ、CSSやJavaScriptを、読み込むとき。
よくあるミスと対処
- ブロック名を、名前空間なしで指定している。
core/galleryのように、指定する。 $postが、未設定のときの確認がない。- 同期パターン(再利用ブロック)や、テンプレートの中のブロックまで、検出できると考えている。検出できない場合がある(通常のパターンは、挿入時に実際のブロックになるため、検出される)。
NG例
if ( has_block( 'gallery' ) ) { // 名前空間がない
// ...
}
OK例
add_action( 'wp_enqueue_scripts', function () {
if ( is_singular() && has_block( 'core/gallery' ) ) {
wp_enqueue_script( 'my-gallery', get_theme_file_uri( '/js/gallery.js' ), array(), '1.0.0', true );
}
} );
使い分け早見表
| 関数 | 役割 |
|---|---|
has_block() |
本文に、ブロックが含まれるかを確認する |
has_shortcode() |
本文に、ショートコードが含まれるかを確認する |
parse_blocks() |
本文を、ブロックの配列に分解する |
関連項目
公式リファレンス:has_block() | Function | WordPress Developer Resources

コメント