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

时间:2018-05-19 18:06:27

标签: php wordpress woocommerce hook-woocommerce custom-taxonomy

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

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 ) );
}

我需要它将cat slug作为类添加到类别页面上的每个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在这里没有意义。

欢迎任何帮助。

1 个答案:

答案 0 :(得分:1)

product_cat_class过滤器挂钩管理3个参数$classes$class$category,因此您的代码有点不完整。此外,在尝试获取slug之前,您应确保$category是已定义的对象。

请改为尝试:

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文件中。经过测试和工作。