You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:02:42