WooCommerce商店页面:隐藏指定分类商品但不全站隐藏
解决WooCommerce主商店页隐藏指定分类商品但保留分类页显示的问题
可以通过WooCommerce的pre_get_posts钩子实现这个需求,核心逻辑是仅在主商店页面时排除指定分类的商品,分类单独页面不受影响。具体代码如下:
add_action( 'pre_get_posts', 'exclude_category_from_shop_page' ); function exclude_category_from_shop_page( $query ) { // 仅针对前台的产品查询生效 if ( ! is_admin() && $query->is_main_query() && is_shop() ) { // 替换这里的分类ID为你需要隐藏的分类ID,多个用逗号分隔 $exclude_categories = array( 12, 34 ); $query->set( 'tax_query', array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $exclude_categories, 'operator' => 'NOT IN', // 如果需要同时排除子分类,取消下面一行的注释 // 'include_children' => true, ) ) ); } }
代码说明:
is_shop():判断当前页面是否是WooCommerce的主商店页面,只有这里才会执行排除逻辑tax_query:通过产品分类的分类ID,使用NOT IN操作符排除指定分类下的商品- 如果需要排除分类的子分类商品,只需取消
include_children的注释即可
使用方法:
- 将上述代码添加到你的主题
functions.php文件中,或者使用自定义代码插件(如Code Snippets) - 替换代码中的
12, 34为你实际需要隐藏的分类ID(可在WooCommerce分类编辑页面的URL中找到ID)
这个方案只会在主商店页隐藏指定分类的商品,而这些分类的单独页面仍会正常显示所有商品,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Rick White
相关产品推荐
相关产品推荐

