在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
在这里没有意义。
欢迎任何帮助。
答案 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文件中。经过测试和工作。