如何在WooCommerce产品分类li标签添加分类slug作为类名?
解决WooCommerce分类列表li添加分类Slug类名的问题
我帮你搞定这个问题!你之前的思路完全正确——用过滤器而不是直接修改核心文件,这才是符合WooCommerce最佳实践的做法,毕竟核心文件更新后你的修改就会丢失。
你之前的代码没成功,核心原因是没有正确接收过滤器传递的全部参数。看一下原函数里的过滤器调用:
$classes = apply_filters( 'product_cat_class', $classes, $class, $category );
这个过滤器一共传递了3个参数:当前的类数组$classes、初始传入的类值$class,以及当前的分类对象$category。而你的回调函数只声明了接收1个参数,自然拿不到$category变量。
下面是修正后的代码,直接放到主题的functions.php文件里就能生效:
add_filter( 'product_cat_class', 'add_category_slug_to_list_item_classes', 10, 3 ); function add_category_slug_to_list_item_classes( $classes, $class, $category ) { // 先判断$category是否为有效的分类对象,避免潜在报错 if ( $category instanceof WP_Term ) { $classes[] = $category->slug; } return $classes; }
代码说明:
add_filter的第四个参数3:明确告诉WordPress我们的回调函数需要接收3个参数,对应过滤器传递的三个值- 增加
instanceof判断:防止当$category为空或不是分类对象时出现PHP错误,让代码更健壮 - 把分类的slug追加到类数组中,最终返回修改后的数组
现在刷新你的分类页面,就能看到每个li标签的class里已经包含了对应分类的slug,效果和你直接修改核心文件完全一样,但再也不用担心WooCommerce更新会覆盖你的修改啦!
内容的提问来源于stack exchange,提问作者Xavier C.
相关产品推荐
相关产品推荐

