请求合并两段WooCommerce商品类别排除代码以实现全页面生效
在WooCommerce全页面隐藏指定商品类别
我来帮你把两段代码合并成一个统一的解决方案,让它能同时在店铺页面和搜索结果页的商品类别组件里隐藏指定类别。
问题分析
你原来的两段代码分别针对不同场景生效:第一段通过过滤include数组排除类别,但仅在店铺页起作用;第二段用exclude参数排除类别,但只覆盖了搜索结果页。其实WooCommerce的商品类别widget原生支持exclude参数,只要正确挂载过滤器,就能在所有页面统一生效。
合并后的完整代码
// 统一处理商品类别组件的排除规则 function exclude_woocommerce_product_categories_widget($args) { // 填入需要排除的商品类别ID,多个ID用逗号分隔 $excluded_category_ids = array(15, 3380, 3308); // 设置exclude参数,让WooCommerce自动在所有页面应用排除规则 $args['exclude'] = $excluded_category_ids; return $args; } // 挂载到两个过滤器,覆盖下拉式和普通列表式的类别组件 add_filter('woocommerce_product_categories_widget_dropdown_args', 'exclude_woocommerce_product_categories_widget'); add_filter('woocommerce_product_categories_widget_args', 'exclude_woocommerce_product_categories_widget');
代码说明
- 统一函数:只用一个函数处理两种类别组件(下拉菜单和普通列表)的参数,避免重复代码,维护更方便
- 原生参数支持:直接使用WooCommerce提供的
exclude参数,会自动在店铺页、搜索结果页等所有加载商品类别组件的页面生效,无需单独适配不同页面 - 灵活调整:后续要添加或移除排除类别,只需要修改
$excluded_category_ids数组即可
把这段代码替换你原来的两段代码,添加到主题的functions.php文件或者自定义插件里,就能实现全页面隐藏指定商品类别的需求了。
内容的提问来源于stack exchange,提问作者Frederic
相关产品推荐
相关产品推荐

