You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ACF get_field在Woocommerce分类遍历函数中无法返回值排查

问题原因及解决方案

1. ACF分类字段调用参数错误

ACF获取自定义分类字段时,第二个参数不能只传term_id,需要传入术语的完整标识字符串(格式为{taxonomy}_{term_id}),或者直接传入WP_Term对象。你当前代码里仅传递$term->term_id,ACF无法正确匹配到对应分类的字段,导致返回空值。

修复方式二选一:

方式一:传入术语标识字符串

将$cat_icon = get_field( 'cat_icon', $term->term_id );修改为:

$cat_icon = get_field( 'cat_icon', "{$taxonomy}_{$term->term_id}" );

利用已定义的$taxonomy变量,生成product_cat_XXX格式的标识,让ACF能精准定位分类字段。

方式二:直接传入WP_Term对象

循环中的$term本身就是WP_Term实例,直接传递该对象即可:

$cat_icon = get_field( 'cat_icon', $term );

2. 额外排查要点

  • 确认ACF字段cat_icon的位置规则已绑定到「产品分类(product_cat)」上,避免字段关联错误。
  • 检查目标子分类的后台编辑页,确认cat_icon字段已上传并保存了图标内容。
  • 可临时添加调试代码(如var_dump(get_field('cat_icon', $term));),直接输出字段返回值,辅助定位问题。

修复后的完整代码示例

function pab_display_subcategories() {
    if ( is_product_category() ) {

        $term_id  = get_queried_object_id();
        $taxonomy = 'product_cat';

        // 获取当前分类的子分类
        $terms    = get_terms([
            'taxonomy'    => $taxonomy,
            'hide_empty'  => false,
            'parent'      => get_queried_object_id()
        ]);

        $output = '
        <div class="bde-wooproductslist breakdance-woocommerce">
            <div class="woocommerce">
                <ul class="products">';
        
                    // 遍历子分类WP_Term对象
                    foreach ( $terms as $term ) {
                        $term_link = get_term_link( $term, $taxonomy );
                        
                        $output .= '<li class="product-category product pab-cat-list"><a href="'. $term_link .'">';
                        
                        // 修正ACF字段调用参数
                        $cat_icon = get_field( 'cat_icon', $term );
                        if ( $cat_icon ) :
                            $output .= '<div class=""><img src="'. esc_url( $cat_icon['url'] ). '" alt="'. esc_attr( $cat_icon['alt'] ) .'" class="pab-wc-category-icon"></div>';
                        endif;

                        $output .= '<div class="pab-cat-list-text">'. $term->name .' '. $term->term_id .'<i class="fa-solid fa-chevron-right"></i></div>
                        </a></li>';
                    }

                echo $output . '
                </ul>
            </div>
        </div>';
    }
}
add_shortcode( 'pab_display_subcategories_content','pab_display_subcategories' );

内容的提问来源于stack exchange,提问作者perqedelius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:56:06