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

WooCommerce如何实现先按库存再按价格排序的自定义商品排序功能

WooCommerce自定义排序规则实现方案

你仅需要修改已编写代码中的woocommerce_get_catalog_ordering_args挂钩函数的排序参数即可,以下是修改后的完整可运行代码:

add_filter( 'woocommerce_catalog_orderby', 'misha_add_custom_sorting_options' );

function misha_add_custom_sorting_options( $options ){
    $options['in-stock'] = '库存优先,价格升序';
    return $options;
}

add_filter( 'woocommerce_get_catalog_ordering_args', 'misha_custom_product_sorting' );
function misha_custom_product_sorting( $args ) {
    if( isset( $_GET['orderby'] ) && 'in-stock' === $_GET['orderby'] ) {
        $args['meta_key'] = '_stock_status';
        // 排序规则按数组顺序优先级执行:先按库存状态,再按价格
        $args['orderby'] = array( 
            'meta_value' => 'ASC',
            'price' => 'ASC'
        );
    }
    return $args;
}

逻辑说明

  • 第一排序规则meta_value => ASC对应_stock_status字段,由于instock字符串的字典序早于outofstock,因此所有在售商品会排在缺货商品前
  • 第二排序规则price => ASC为WooCommerce内置的价格排序规则,相同库存状态的商品会自动按价格从低到高排列,完全匹配你给出的示例排序预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:45:02