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

如何在WooCommerce显示子分类的产品分类页为body添加类?

在WooCommerce产品分类页展示子分类时为body添加自定义类

完全可以实现,你代码里的问题在于is_subcategory_show()并不是WordPress或WooCommerce的原生函数,所以需要自己实现判断逻辑——确认当前产品分类页确实在展示子分类(包括只显示子分类,或者同时显示子分类和产品)。

下面是可行的代码方案:

function my_custom_body_class_woo_cat($classes) {
    // 先判断是否在产品分类页
    if (is_product_category()) {
        $current_cat = get_queried_object();
        // 获取当前分类的子分类(只要存在至少一个即可)
        $has_subcats = get_terms(array(
            'taxonomy' => 'product_cat',
            'parent' => $current_cat->term_id,
            'hide_empty' => false, // 若只想统计有产品的子分类,改为true
            'number' => 1 // 只查1个,提升性能
        ));
        
        // 获取WooCommerce分类页的显示设置
        $cat_display_option = get_option('woocommerce_category_archive_display');
        
        // 判断条件:当前分类有子分类,且页面设置为显示子分类(或两者都显示)
        if (!empty($has_subcats) && ($cat_display_option === 'subcategories' || $cat_display_option === 'both')) {
            $classes[] = 'my-class';
        }
    }
    return $classes;
}
add_filter('body_class','my_custom_body_class_woo_cat');

代码说明:

  • get_queried_object():获取当前页面的产品分类对象。
  • get_terms():查询当前分类下的子分类,用number => 1减少查询量,只需要确认是否存在子分类即可。
  • woocommerce_category_archive_display:这个WooCommerce选项控制分类页默认显示内容,可选值为products(仅产品)、subcategories(仅子分类)、both(两者都显示)。

把这段代码添加到你的主题functions.php文件中,或者自定义插件里,就能在符合条件的页面给body标签加上my-class类了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:06:24