如何在WooCommerce产品描述与附加信息标签中显示ACF重复器内容
排查ACF重复器在WooCommerce标签模板不显示的问题
以下是几个核心排查方向和解决方法:
确认当前上下文的产品ID正确性
WooCommerce标签模板的上下文可能存在对象偏差,务必确保用当前产品ID调用ACF字段。可以先在模板中添加测试代码验证:echo get_the_ID(); // 输出当前页面ID,核对是否为目标产品的ID调用重复器时明确传入产品ID:
if( have_rows('你的重复器字段名', get_the_ID()) ): while( have_rows('你的重复器字段名', get_the_ID()) ): the_row(); echo get_sub_field('文本子字段名'); endwhile; endif;检查ACF字段配置
- 确认重复器字段的位置规则:必须设置为「产品」类型,且匹配目标产品的分类、状态等条件,避免字段未应用到对应产品。
- 核对子字段名称拼写:ACF调用严格区分大小写和下划线,比如子字段
product_detail不能写成Product_Detail。
验证模板修改的正确性
- 如果你直接修改WooCommerce模板,要确保是在主题的
woocommerce子目录下操作(比如your-theme/woocommerce/single-product/tabs/description.php),不要修改插件目录文件,否则插件更新会覆盖改动。 - 推荐用钩子替代直接改模板,更安全且易维护,比如针对标签末尾的钩子:
// 追加到描述标签底部 add_action('woocommerce_product_description_tab_end', 'display_acf_repeater_desc'); function display_acf_repeater_desc() { if( have_rows('你的重复器字段名', get_the_ID()) ): echo '<div class="acf-repeater-wrap">'; while( have_rows('你的重复器字段名', get_the_ID()) ): the_row(); echo '<p>' . get_sub_field('文本子字段名') . '</p>'; endwhile; echo '</div>'; endif; } // 追加到附加信息标签底部 add_action('woocommerce_product_additional_information_tab_end', 'display_acf_repeater_info'); function display_acf_repeater_info() { // 重复上述重复器调用逻辑即可 }
将这段代码放到主题的
functions.php中测试。- 如果你直接修改WooCommerce模板,要确保是在主题的
确认产品已填写重复器内容
检查目标产品的编辑页面,确保ACF重复器字段已添加至少一行内容,且文本子字段有值——空内容自然会导致容器为空。排除冲突问题
暂时禁用其他插件(尤其是缓存、ACF扩展类插件),切换到WooCommerce默认主题Storefront,测试代码是否生效,排查是否是第三方代码干扰了ACF的查询逻辑。
内容的提问来源于stack exchange,提问作者libertarian
相关产品推荐
相关产品推荐

