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

WooCommerce搜索结果添加‘按特色排序’并前置特色产品问题

在WooCommerce搜索结果中优先显示特色产品的正确实现方案

要解决搜索结果里特色产品排在普通产品之前的需求,以下是经过验证的代码方案,能避免你之前遇到的只显示特色产品或排序混乱的问题:

add_action( 'pre_get_posts', 'prioritize_featured_products_in_search' );
function prioritize_featured_products_in_search( $query ) {
    // 仅对前台产品搜索的主查询生效
    if ( ! is_admin() && $query->is_search() && $query->is_main_query() && $query->get( 'post_type' ) === 'product' ) {
        // 构建meta查询,识别特色产品
        $meta_query = $query->get( 'meta_query', [] );
        $meta_query[] = [
            'key'     => '_featured',
            'value'   => 'yes',
            'compare' => 'EXISTS',
            'type'    => 'BOOLEAN'
        ];
        $query->set( 'meta_query', $meta_query );

        // 设置排序规则:先按特色产品优先级降序,再按搜索相关性排序
        $query->set( 'orderby', [ 'meta_value' => 'DESC', 'relevance' => 'DESC' ] );
        $query->set( 'meta_key', '_featured' );
    }
}

代码说明:

  • 条件限制:通过is_admin()、is_search()、is_main_query()和post_type判断,确保只修改前台的产品搜索主查询,不会干扰后台或其他页面的产品展示
  • Meta查询:WooCommerce用_featured这个元数据键标记特色产品,值为yes,通过EXISTS比较确保同时包含特色和普通产品
  • 排序规则:先按_featured元值降序排列(特色产品会排在前面),再按搜索相关性排序,保证普通产品的搜索结果逻辑正常

使用注意:

  • 将代码添加到主题的functions.php文件,或者使用自定义代码管理插件(如Code Snippets)
  • 测试前清空网站缓存,确保查询规则生效
  • 如果有其他插件或主题也修改了产品查询,可以调整add_action的优先级参数(比如add_action( 'pre_get_posts', 'prioritize_featured_products_in_search', 20 );),让这段代码最后执行,覆盖其他排序规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:12:41