将术语 slug 作为 class 添加到 Woocommerce 中的产品类别 div 标签

Add the term slug as a class to the product category div tag in Woocommerce

在 Woocommerce 中,我试图过滤位于 wc-template-functions.php 核心代码中的 wc_get_product_cat_class() 函数的输出:

function wc_get_product_cat_class( $class = '', $category = null ) {
    $classes   = is_array( $class ) ? $class : array_map( 'trim', explode( ' ', $class ) );
    $classes[] = 'product-category';
    $classes[] = 'product';
    $classes[] = wc_get_loop_class();
    $classes   = apply_filters( 'product_cat_class', $classes, $class, $category );

    return array_unique( array_filter( $classes ) );
}

我需要它将猫鼻涕虫作为 class 添加到类别页面上的每个 li 标签。

当我直接编辑文件并将其添加到函数中时它工作正常:

$classes[] = $category->slug;

然后我有<li class="product-category whatever-cat-slug product">

但显然我正在尝试找到一种更好的方法将其添加到我的主题功能文件中。

我试过了,没有成功:

add_filter( 'product_cat_class' , 'add_class_to_category_list_element');
function add_class_to_category_list_element($classes) {
$classes[] = $category->slug;
return $classes;
} 

因为$category在这里没有意义。

欢迎任何帮助。

product_cat_class 过滤器挂钩管理 3 个参数 $classes$class$category,因此您的代码有点不完整。此外,您应该确保 $category 是一个已定义的对象,然后再尝试在其上添加 slug。

试试这个:

add_filter( 'product_cat_class' , 'add_class_to_category_list_element', 10, 3 );
function add_class_to_category_list_element( $classes, $class, $category ) {
    if( is_object( $category ) )
        $classes[] = $category->slug;

    return $classes;
}

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