概要
has_block
関数は、特定の投稿やページのコンテンツ内に指定したブロックが含まれているかどうかを調べるために使用されます。この関数は主に以下のような機能を実装する際によく使われます。
- コンテンツ内に特定のブロックが存在するか検討する。
- カスタムテンプレートを条件に基づいて変更する。
- ブロックの有無によってスタイルやスクリプトを条件付きで読み込む。
- 投稿が特定の形式(例: ギャラリー、動画など)かどうかを確認する。
- レンダリングするコンテンツにフックするための条件判定。
- ユーザーインターフェース要素の表示/非表示を制御する。
- ウィジェットエリアやサイドバーの内容に基づく条件付き表示。
- エディタやテーマの開発において、コンテンツの構造を把握するため。
構文
has_block( $block_name, $post );
パラメータ
$block_name
(string): チェックしたいブロックの種類を指定します。$post
(int|string|WP_Post): 検索する投稿またはページのID。またはWP_Post
オブジェクトを指定します。
戻り値
bool
: 指定されたブロックが存在する場合はtrue
、存在しない場合はfalse
を返します。
関連する関数
使用可能なバージョン
- WordPress 5.0 以降で利用可能です。
コアファイルのパス
wp-includes/block.php
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | 〇 |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1: 投稿ブロックが含まれているか調べる
if ( has_block( 'core/paragraph', $post->ID ) ) {
// 投稿にパラグラフブロックが含まれている場合の処理
echo 'この投稿にはパラグラフブロックがあります。';
}
このコードは、特定の投稿にパラグラフブロックが含まれているかどうかを確認し、もし含まれていればメッセージを表示します。
サンプルコード2: カスタムスタイルの条件付き読み込み
function enqueue_custom_style() {
if ( has_block( 'core/image', get_the_ID() ) ) {
wp_enqueue_style( 'custom-image-style', get_template_directory_uri() . '/css/image-style.css' );
}
}
add_action( 'wp_enqueue_scripts', 'enqueue_custom_style' );
このコードは、投稿に画像ブロックが含まれている場合のみ、特定のCSSスタイルシートを読み込みます。
サンプルコード3: 特定のブロックに基づくコンテンツの条件付き表示
if ( has_block( 'core/gallery', $post ) ) {
// ギャラリーブロックが含まれている場合に特定のメッセージを表示
echo '<div>この投稿にはギャラリーがあります。</div>';
}
このコードでは、指定された投稿にギャラリーが含まれている場合に、特別なメッセージを表示します。
サンプルコード4: テンプレートの条件分岐
if ( has_block( 'core/heading', $post->ID ) ) {
get_template_part( 'template-parts/content', 'heading' );
} else {
get_template_part( 'template-parts/content', 'standard' );
}
このコードは、投稿に見出しブロックがある場合、異なるテンプレートパーツを読み込むための条件分岐を示しています。
サンプルコード5: 投稿タイプに応じたブロックの有無チェック
if ( 'post' === get_post_type() && has_block( 'core/video', get_the_ID() ) ) {
echo '<div>この記事には動画が含まれています。</div>';
}
このコードでは、投稿タイプが「post」であるかどうかを確認し、動画ブロックが含まれていれば、特定のメッセージを表示します。
これらのサンプルコードはすべて著作権フリーのもので、WordPressの開発やカスタマイズに役立つ例です。