为顶级产品类别添加 body class 到 WooCommerce 档案

Add a body class for top level product categories to WooCommerce archives

我正在使用 WooCommerce 并且有产品类别、子类别和 sub-subcategories。我只需要将一些 css 应用于不是子类别的产品类别(主要的“parent”产品类别)。这些有 body 选择器吗?

到目前为止,我只提出了使用每个类别 ID 的解决方案,但这会导致大量 css。

基于 Add a body class for product category archive page in Woocommerce answer code, using the dedicated WordPress body_class action hook, with Woocommerce is_product_category(),您可以添加 top-category 作为所有顶级类别归档页面的正文 class,如下所示:

add_filter( 'body_class', 'parent_category_as_body_class', 99, 1 );
function parent_category_as_body_class( $classes ){
    if( is_product_category() ){
        $ancestors = get_ancestors( get_queried_object_id(), 'product_cat' );

        if( count($ancestors) == 0 ) $classes[] = 'top-category';
    }
    return $classes;
}

代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。