使用Advanced Custom Fields创建Gutenberg区块出现内容重复如何解决
问题根因
ACF 古腾堡区块的字段值是和单个区块实例绑定存储的,直接调用 get_field('字段名') 时如果不指定区块上下文参数,函数会默认读取当前文章的全局自定义字段,或是优先返回第一个匹配到的同名字段值,因此多实例场景下会出现内容重复的问题。
解决步骤
- 调整字段获取逻辑
你需要在区块的渲染模板/渲染回调函数中,将当前区块的实例变量作为get_field的第二个参数传入。如果你使用ACF官方提供的区块渲染模板,默认会自动传入$block变量,直接调用即可,示例如下:// 错误写法 // $heading = get_field('heading'); // 正确写法 $heading = get_field('heading', $block); $content_text = get_field('text', $block); $button_config = get_field('button', $block); - 校验区块注册配置
确认你注册区块时的配置正确,supports数组中multiple参数已设置为true,同时不存在提前缓存字段值的逻辑,注册参考如下:add_action('acf/init', 'register_custom_simple_block'); function register_custom_simple_block() { acf_register_block_type([ 'name' => 'simple-content-block', 'title' => '简单内容区块', 'supports' => [ 'multiple' => true, ], 'render_template' => 'your-block-render-template-path.php', ]); } - 排查额外上下文干扰
如果调整后问题仍然存在,检查是否存在自定义字段缓存逻辑、页面静态缓存配置,或是在区块渲染前有调用the_post()等修改全局文章上下文的代码,导致区块上下文被覆盖。
内容的提问来源于stack exchange,提问作者Naomi S
相关产品推荐
相关产品推荐

