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

如何基于taxonomy对分类页商品排序 优先展示brand:apple的商品

按brand taxonomy优先展示apple品牌商品的设置方案

通用实现逻辑

给商品列表的排序规则新增自定义权重:将brand字段值为apple的商品权重设为1,samsung的设为2,按权重升序作为第一排序条件,原有排序规则(如上架时间、销量等)作为第二排序条件即可。

常见场景具体操作

WooCommerce 站点

将以下代码添加到当前主题的functions.php文件中即可生效:

add_action( 'pre_get_posts', 'custom_brand_priority_sort' );
function custom_brand_priority_sort( $query ) {
    // 仅对前台商品分类页主查询生效
    if ( ! is_admin() && $query->is_main_query() && is_product_category() ) {
        // 若brand为自定义分类法,将下方meta_query替换为tax_query即可
        $query->set( 'meta_query', array(
            'relation' => 'OR',
            array(
                'key' => 'brand',
                'value' => 'apple',
                'compare' => '='
            ),
            array(
                'key' => 'brand',
                'value' => 'samsung',
                'compare' => '='
            )
        ) );
        // 自定义排序规则
        $query->set( 'orderby', array(
            'meta_value' => 'ASC',
            'date' => 'DESC' // 此处可替换为price、sales等原有排序字段
        ) );
    }
}

Shopify 站点

  • 商品数量少的情况:进入对应分类页设置,点击排序下拉框选择「手动」,直接拖拽所有apple品牌商品到samsung商品上方保存即可
  • 商品数量多的情况:通过Shopify API给所有apple品牌商品标记自定义排序值priority:1,samsung标记为priority:2,分类页排序选择按priority字段升序排列即可

自定义开发站点

原生SQL实现示例

SELECT * FROM products 
WHERE category_id = 【你的分类ID】
ORDER BY 
  CASE WHEN brand = 'apple' THEN 1 ELSE 2 END ASC,
  created_at DESC; -- 此处可替换为原有排序规则,如sales、price等

Laravel ORM实现示例

$products = Product::where('category_id', $categoryId)
    ->orderByRaw("CASE WHEN brand = 'apple' THEN 1 ELSE 2 END ASC")
    ->orderBy('created_at', 'desc')
    ->get();

注意事项

  • 若你站点的brand是用分类法存储而非自定义字段存储,只需将对应查询条件里的字段查询替换为分类法查询即可,排序逻辑不需要改动
  • 第二排序维度可以根据你的业务需求自由调整,不会影响apple品牌优先展示的规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:57:00