如果选择了字段,则排除块?

问题描述

如果选择了字段,是否可以排除块?我正在使用 get_field('article_style' ) == 'major',如果它被选中,则块 acf/opby-cover-image 不会出现在我的主题中。我正在使用来自 Skip Certain Gutenberg Block in Loopadd_filter

如果该字段被选中,我下面的代码确实有效,但如果不是,则它不会显示其余的内容。关于如何在选择字段时不显示此块但在未选择字段时显示内容的任何想法?

function remove_blocks() {
  if ( is_single() && (get_field('article_style' ) == 'major') ) {
    $blocks = parse_blocks( get_the_content() );
    foreach ( $blocks as $block ) {
        if ( 'acf/opby-cover-image' === $block['blockName'] ) {
            continue;
        } else {
            echo render_block( $block );
        }
    }
  }
}
add_filter( 'the_content','remove_blocks');

解决方法

条件检查是否可能在循环中而不是之前?

if ( is_single() ) {
    $blocks = parse_blocks( get_the_content() );
    foreach ( $blocks as $block ) {
        if ( 'acf/opby-cover-image' === $block['blockName'] && (get_field('article_style' ) == 'major') {
            continue;
        } else {
            echo render_block( $block );
        }
    }
}