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

如何为无子的WooCommerce产品分类存档添加Body类?

解决产品分类页面添加无子分类自定义Body类的问题

你的代码主要有三个问题导致无效:

  • 没有获取当前产品分类的ID,代码里的id是未定义变量
  • 判断子分类存在的逻辑搞反了,应该检查子分类数组是否为空
  • 没限定仅在产品分类页面执行,可能在其他页面误触发

直接用下面的修正代码替换你的原有代码即可:

add_filter( 'body_class', 'add_childless_category_body_class' );
function add_childless_category_body_class( $classes ) {
    // 仅在产品分类页面执行逻辑
    if ( is_product_category() ) {
        // 获取当前页面的产品分类对象
        $current_category = get_queried_object();
        // 获取该分类的所有直接子分类,这里hide_empty设为false会显示所有子分类,不管是否有产品
        // 如果你只想排除完全空的子分类,把false改成true即可
        $child_categories = get_terms( array(
            'taxonomy' => 'product_cat',
            'parent'   => $current_category->term_id,
            'hide_empty' => false,
        ) );
        
        // 没有子分类的话,给body添加childless类
        if ( empty( $child_categories ) ) {
            $classes[] = 'childless';
        }
    }
    return $classes;
}

代码说明:

  • is_product_category():确保这段代码只在WooCommerce产品分类页面生效,避免干扰其他页面
  • get_queried_object():准确获取当前页面对应的产品分类对象,拿到正确的分类ID
  • get_terms指定product_cat分类法:专门针对产品分类获取子分类,比通用的get_categories更精准
  • empty($child_categories):直接判断是否存在子分类,逻辑更准确

添加完这个代码后,无子分类的产品分类页面的body标签就会带上childless类,你就可以直接用.childless来写对应的CSS样式了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:12:12