如果是 ACF 块模板

If is ACF block template

我正在使用 ACF 构建积木。

这是我通过 functions.php 编写的一个简单函数:

<?php
function my_test_function() {
    if ( is_page_template( 'template-parts/blocks/hero/hero.php' ) ) {
        echo '<p>I appear via the hero.php template.</p>';
    }
    if ( is_page_template( 'template-parts/blocks/video/video.php' ) ) {
        echo '<p>I appear via the video.php template.</p>';
    }
}
?>

这是我通过 hero.php 和 video.php

调用函数的方式
<?php
    my_test_function();
?>

当我测试这个时,什么也没有出现。我猜 is_page_template function 在这种情况下不起作用,因为它在技术上不是页面模板。

是否有其他函数可以与 ACF 块模板一起使用?

您可以使用 parse_block() : https://developer.wordpress.org/reference/functions/parse_blocks/ 然后遍历块以检查此页面是否存在 blockName :

function check_if_block_exist($block_handle) {
  $post = get_post(); 

  if(has_blocks($post->post_content)) {
    $blocks = parse_blocks($post->post_content);

    foreach( $blocks as $block ) {
      if($block['blockName'] === $block_handle) {
        return true;
      }
    }
    return false;
  }
}