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
相关产品推荐
相关产品推荐

