移除WooCommerce店铺页面的商品分类显示
搞定WooCommerce Shop页面的商品分类展示问题
嘿,我来帮你解决这个Shop页面不该显示商品分类的问题!你的需求是让Shop页面只展示商品,去掉顶部的分类列表对吧?先说说你之前代码的问题,再给你两个更靠谱的方案:
方案1:用PHP彻底移除Shop页面的分类列表
你之前的代码是通过过滤分类项来隐藏指定分类,但其实WooCommerce有现成的钩子可以直接干掉整个分类列表模块,比逐个过滤高效多了。把你之前的代码换成这段:
add_action( 'woocommerce_before_shop_loop', 'remove_shop_page_product_categories', 1 ); function remove_shop_page_product_categories() { // 只在Shop页面生效 if ( is_shop() ) { // 移除默认输出分类列表的动作 remove_action( 'woocommerce_before_shop_loop', 'woocommerce_product_subcategories', 10 ); } }
原理很简单:WooCommerce默认会在Shop页面商品列表前,用woocommerce_product_subcategories函数输出分类列表。我们提前一步把这个输出动作移除,分类列表就不会显示了,而且完全不影响商品分类页面的正常分类展示(毕竟分类页面本来就该显示分类嘛)。
方案2:用CSS快速隐藏(适合不想改代码的情况)
如果你不想碰PHP代码,直接用CSS也能搞定,只需要给Shop页面的分类列表加个隐藏样式就行。把这段代码加到你主题的自定义CSS里(后台找「外观→自定义→额外CSS」):
/* 仅隐藏Shop页面的商品分类列表 */ body.post-type-archive-product .woocommerce-product-subcategories { display: none !important; }
这个CSS只会作用于Shop页面(post-type-archive-product是Shop页面专属的body类),商品分类页面的分类展示完全不受影响,非常安全。
为啥你之前的代码没达到预期?
你之前的代码是选择性隐藏几个指定slug的分类,而且只在Shop页面生效——这其实逻辑是对的,但它不是彻底移除整个分类列表模块。另外你说“无法隐藏商品分类页面的分类”,其实这是正常的,因为商品分类页面本来就需要展示分类内容,如果你真的要隐藏分类页面的分类,那得再加个条件,但根据你的需求,应该只需要处理Shop页面就行啦。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

