acf_has_block_type()


関数WordPressacf_has_block_type()は、特定のブロックタイプが現在の投稿またはページに含まれているかを確認するために使用されます。

シンタックス

acf_has_block_type( string $block_type, int|WP_Post|null $post = null );

引数の説明:

  • $block_type (string) — チェックするACFブロックの名前。
  • $post (int|WP_Post|null) — チェック対象の投稿IDまたはWP_Postオブジェクト(省略可能)。

例 1: 投稿内に特定のブロックがあるか確認

次のコードは、現在の投稿に特定のACFブロックが含まれているか確認します。

<?php if ( acf_has_block_type( 'acf/test-block' ) ) { echo 'ブロックが含まれています。'; } ?>

例 2: 特定の投稿でブロックの存在を確認

投稿IDを指定して、ブロックの存在を確認できます。

<?php if ( acf_has_block_type( 'acf/test-block', 42 ) ) { echo 'この投稿にブロックがあります。'; } ?>

例 3: 現在の投稿または固定ページでのブロックチェック

現在表示されているページでブロックの存在を確認します。

<?php if ( acf_has_block_type( 'acf/custom-block', get_the_ID() ) ) { echo 'カスタムブロックが存在します。'; } ?>

例 4: 条件分岐を使用して異なる出力を表示

ブロックの有無によって異なるメッセージを表示します。

<?php
if ( acf_has_block_type( 'acf/sample-block' ) ) {
    echo 'このブロックが含まれています。';
} else {
    echo 'このブロックはありません。';
}
?>

例 5: 管理画面で投稿ごとにブロックの有無を確認

管理画面のカスタムカラムでブロックの有無を表示できます。

<?php
add_filter( 'manage_posts_columns', function( $columns ) {
    $columns['acf_block_check'] = 'ACFブロック';
    return $columns;
});
add_action( 'manage_posts_custom_column', function( $column, $post_id ) {
    if ( $column === 'acf_block_check' ) {
        echo acf_has_block_type( 'acf/custom-block', $post_id ) ? 'あり' : 'なし';
    }
}, 10, 2 );
?>

注意点

  • 投稿IDを指定しない場合、現在の投稿が対象になります。
  • ACFブロックが登録されていない場合、この関数は常にfalseを返します。