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

WooCommerce搜索及后台隐藏产品分类失败求助

解决WooCommerce隐藏产品分类代码无效的问题

你的代码无效主要有三个核心问题,下面逐一说明并给出修正方案:

1. 语法转义错误(最致命)

你提供的代码里存在HTML转义字符:->应该是->,&&应该是&&,这些转义字符会导致PHP语法错误,代码直接无法运行。

2. 查询场景覆盖不全

原代码只处理了产品归档页和产品分类归档页,没有覆盖你需要的搜索页面和后台产品管理界面,所以这两个场景下隐藏分类的逻辑完全没生效。

3. 后台查询未做针对性处理

后台的产品列表查询需要单独判断,避免代码影响其他后台功能(比如文章、页面的查询)。


修正后的完整代码

function exclude_product_categories( $q ) {
    $excluded_cats = array(
        3233, 3254, 3244, 1990, 3120, 3129, 3121, 2717, 2718, 2355,
        3314, 2356, 3040, 3312, 2978, 2357, 3125, 3117, 2358, 1994,
        3333, 1995, 2998, 2699, 3123, 2714, 2700, 1991, 3330, 3324,
        1992, 3325, 2862, 3122, 3328, 2013, 3156, 2364, 2479, 3246,
        2701, 3256, 3166, 2698, 2353, 3115, 3116, 3251, 3329, 3331,
        3250, 2010, 2011, 2171, 2715, 2796, 2980, 2981, 3124, 3255,
        3243, 2894, 1984, 1985, 1986, 3231, 3101, 3105, 3102, 3109,
        3103, 2418, 2419, 3253, 2814, 3170, 1987, 1988, 2015, 2996,
        2017, 3012, 2989, 2570, 3234, 2571, 2006, 2007, 2004, 3230,
        2012, 2695, 2864, 3235, 3005, 2466, 2908, 2909, 2910, 2008,
        2682, 2786, 2991, 2812, 2019, 2020, 2900, 2791, 3241, 3238,
        3357, 3358, 2904, 2905, 3245, 2893, 2459, 2795, 2906, 2897,
        2907, 2684, 3153, 3104, 2902, 3240, 2349, 2350, 2351, 3377,
        3161, 3162, 3247, 3248, 3376, 3249, 3239, 1996, 2001, 2792,
        2912, 2002, 2990, 2003, 2567, 2568, 2374, 2375, 2456, 3257,
        3154, 1999, 2354, 2000, 2895, 3164, 2896, 2021, 3293, 2022,
        3155, 3147, 3167, 3313, 2697, 2911, 2457, 3237, 2901, 2683,
        2898, 2903, 2719, 2793, 2794, 2876, 2877, 2720, 2995, 3252,
        1193, 1205, 1201, 1203, 1511, 3480, 1697, 3165, 1250, 1734,
        1899, 1874, 1729, 1853, 1204, 3363, 1176
    );

    // 处理前台:产品归档、分类归档、搜索页面
    if ( !is_admin() && $q->is_main_query() && ( $q->is_post_type_archive('product') || $q->is_tax('product_cat') || $q->is_search() ) ) {
        $tax_query = (array) $q->get('tax_query');
        $tax_query[] = array(
            'taxonomy' => 'product_cat',
            'field' => 'term_id',
            'terms' => $excluded_cats,
            'operator' => 'NOT IN'
        );
        $q->set('tax_query', $tax_query);
    }

    // 处理后台:产品列表页查询
    if ( is_admin() && $q->is_main_query() && $q->get('post_type') === 'product' ) {
        $tax_query = (array) $q->get('tax_query');
        $tax_query[] = array(
            'taxonomy' => 'product_cat',
            'field' => 'term_id',
            'terms' => $excluded_cats,
            'operator' => 'NOT IN'
        );
        $q->set('tax_query', $tax_query);
    }
}
add_action( 'pre_get_posts', 'exclude_product_categories' );

代码说明

  • 修复了所有转义语法错误,确保PHP能正常解析
  • 前台新增了$q->is_search()判断,覆盖搜索页面
  • 新增了后台产品列表的判断逻辑,只针对产品类型的查询生效,避免影响其他后台功能
  • 分前台和后台两个分支处理,逻辑更清晰

内容的提问来源于stack exchange,提问作者ioGadgets

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:20:53