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

Woocommerce实现子分类页面返回按钮显示父分类名称

问题原因梳理

你现有代码的核心问题有2个:

  • get_ancestors 第二个参数传错,你传了slug_name,该参数实际要求传入分类法名称,此处应传product_cat,且该方法返回的结果是父分类的ID数组,不是分类对象
  • 你直接用父分类ID $parent_id->name 取名称,ID是数字类型,不可能直接读取到分类名称属性,必须先通过ID获取分类对象才能读取名称字段

修正后完整代码

add_action( 'woocommerce_before_shop_loop', 'my_back_button_sample', 11 );
function my_back_button_sample() {
    if ( is_product_category() ) {
        $current_term = get_queried_object();
        $back_text = '商品分类'; // 一级分类兜底显示文本,可自行修改
        
        // 判断是否为子分类,存在父分类时获取父分类名称
        if ( $current_term->parent != 0 ) {
            $parent_term = get_term( $current_term->parent, 'product_cat' );
            if ( ! is_wp_error( $parent_term ) ) {
                $back_text = $parent_term->name;
            }
        }

        echo '<br/><div class="avia-button-wrap avia-button-left  avia-builder-el-9  el_after_av_button  el_before_av_button ">
        <a class="avia-button   avia-icon_select-no avia-color-blue avia-size-medium avia-position-left " onclick="history.back();" style="cursor: pointer;">
        <span class="avia_iconbox_title">返回至 '.$back_text.'</span></a></div> '; 
    }
}

逻辑说明

  • 首先直接读取当前分类对象的parent属性,值为0代表是顶级分类,此时可以显示自定义的兜底文本,无需取父分类
  • 父ID不为0时,直接用get_term方法通过父ID和product_cat分类法获取父分类对象,校验无错误后读取名称字段即可
  • 移除了冗余的get_ancestors遍历逻辑,不需要遍历所有祖先分类,直接取直属父分类即可满足需求,性能更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:27:00