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

WooCommerce商品按销量及库存状态排序需求及代码调试

WooCommerce 商品按销量+库存状态排序实现方案

需求

实现WooCommerce商品排序逻辑:

  • 第一优先级:销量(受欢迎度popularity)降序
  • 第二优先级:库存状态(_stock_status)升序,确保在售(instock)商品显示在顶部

解决方案代码

add_action( 'woocommerce_product_query', 'sort_by_sales_then_stock_status', 999 );
function sort_by_sales_then_stock_status( $query ) {
    if ( is_admin() ) return;

    // 构建元查询,确保包含库存状态字段
    $meta_query = $query->get( 'meta_query' ) ?: [];
    $meta_query[] = [
        'key'     => '_stock_status',
        'compare' => 'EXISTS'
    ];
    $query->set( 'meta_query', $meta_query );

    // 设置排序规则:先销量降序,再库存状态升序
    $query->set( 'orderby', [
        'meta_value_num' => 'DESC', // 对应销量字段total_sales
        'meta_value'     => 'ASC'   // 对应库存状态字段_stock_status
    ] );
    $query->set( 'meta_key', 'total_sales' );
}

代码说明

  • total_sales是WooCommerce内置的销量统计元字段,通过meta_value_num按数值降序排序,实现销量优先的需求
  • _stock_status字段值为instock的商品,在升序排序中会排在outofstock之前,保证在售商品处于同销量商品的顶部
  • 加入meta_query确保查询包含库存状态字段,避免排序逻辑失效
  • 后台管理页面不受该逻辑影响,仅前台商品列表生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:22:50