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

如何在WooCommerce中以分类深度为条件编写if判断语句

解决WooCommerce分类深度判断的问题

首先先理清楚你的分类结构对应的深度值——WooCommerce的产品分类(product_cat)默认是从0开始计数绝对深度的:

  • 顶级分类fruit:深度0
  • 一级子分类apple/banana:深度1
  • 二级子分类large(apple下)/var1(banana下):深度2
  • 三级子分类large(var1下):深度3

你之前用第三方函数返回空数组,大概率是因为函数没有正确获取当前的产品分类对象,或者逻辑适配的是普通文章分类而非WooCommerce产品分类。直接用WordPress/WooCommerce原生方法就能解决问题,下面分场景给你代码:

场景1:在分类存档页面(比如taxonomy-product_cat.php)判断

直接获取当前被查询的分类对象,然后读取它的depth属性即可:

// 获取当前分类对象
$current_cat = get_queried_object();

// 确保获取到的是有效的产品分类
if ( $current_cat && is_a( $current_cat, 'WP_Term' ) && $current_cat->taxonomy === 'product_cat' ) {
    $cat_depth = $current_cat->depth;

    // 深度为2的分类(比如apple > large)
    if ( $cat_depth === 2 ) {
        // 这里写你的操作代码,比如加载特定模板、显示自定义内容
        echo "执行深度为2的分类操作";
    }
    // 深度为3的分类(比如banana > var1 > small)
    elseif ( $cat_depth === 3 ) {
        // 另一组操作逻辑
        echo "执行深度为3的分类操作";
    }
}

场景2:在单个产品页面判断所属分类的深度

如果要在产品详情页根据产品所属的分类深度做操作,需要先获取产品的所有分类,再逐个判断:

global $product;
if ( ! $product ) return;

// 获取产品关联的所有产品分类
$product_cats = get_the_terms( $product->get_id(), 'product_cat' );
if ( ! $product_cats || is_wp_error( $product_cats ) ) return;

foreach ( $product_cats as $cat ) {
    $cat_depth = $cat->depth;
    if ( $cat_depth === 2 ) {
        // 针对深度2的分类执行操作
    } elseif ( $cat_depth === 3 ) {
        // 针对深度3的分类执行操作
    }
}

为什么之前的函数失效?

第三方函数可能存在几个问题:

  • 没有针对product_cat分类做适配,默认调用的是普通文章分类category的逻辑
  • 没有判断当前页面是否是分类存档页,导致获取不到分类对象返回空
  • 函数本身逻辑过时,不兼容新版WordPress/WooCommerce

直接用原生的WP_Term对象的depth属性是最可靠的,不需要依赖外部工具函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:26:36