如何仅在WooCommerce面包屑一级分类移除product-category标识
WooCommerce 仅移除一级分类面包屑的product-category标识方案
可以通过WooCommerce原生过滤器实现需求,无需修改核心文件,将以下代码添加到当前主题的functions.php文件,或者自定义代码片段插件中即可生效:
add_filter( 'woocommerce_get_breadcrumb', 'remove_first_level_cat_product_category_prefix', 20, 2 ); function remove_first_level_cat_product_category_prefix( $crumbs, $breadcrumb ) { foreach ( $crumbs as $key => $crumb ) { // 仅处理商品分类类型的面包屑项 if ( isset( $crumb[1] ) && strpos( $crumb[1], 'product-category' ) ) { $term_id = url_to_postid( $crumb[1] ); if ( !$term_id ) continue; $product_cat = get_term( $term_id, 'product_cat' ); // 判断是否为无父级的一级分类 if ( $product_cat && $product_cat->parent == 0 ) { $crumbs[$key][1] = str_replace( 'product-category/', '', $crumb[1] ); } } } return $crumbs; }
注意事项
- 代码部署后,需要前往WordPress后台「设置」-「固定链接」页面点击保存,刷新重写规则后才会生效
- 如果你的站点提前自定义过商品分类的固定链接前缀,需要将代码中
product-category/替换为你实际使用的前缀 - 如果你使用的主题自带自定义面包屑功能,需要先切换为WooCommerce原生面包屑,该代码才会生效
- 测试时可分别打开一级分类页和子分类页,确认仅一级分类的链接中
product-category标识被移除,子分类对应标识正常保留
内容的提问来源于stack exchange,提问作者Raavs
相关产品推荐
相关产品推荐

