php - 按库存和价格对产品进行排序 woocommerce
问题描述
我想在 Woo 上创建一个新的排序,排序如下:
产品1:stock_status => instock, price => 10;
产品2:stock_status => outofstock, price => 20;
产品3:stock_status => outofstock, price => 30;
产品4:stock_status => instock, price => 40;
新的排序结果:
产品1:stock_status => instock, price => 10;
产品4:stock_status => instock, price => 40;
产品2:stock_status => outofstock, price => 20;
产品3:stock_status => outofstock, price => 30;
首先按库存,然后按价格。我有这个工作,但我不知道如何继续:
add_filter( 'woocommerce_catalog_orderby', 'misha_add_custom_sorting_options' );
function misha_add_custom_sorting_options( $options ){
$options['in-stock'] = 'Show products in stock first';
return $options;
}
add_filter( 'woocommerce_get_catalog_ordering_args', 'misha_custom_product_sorting' );
function misha_custom_product_sorting( $args ) {
// Show products in stock first
if( isset( $_GET['orderby'] ) && 'in-stock' === $_GET['orderby'] ) {
$args['meta_key'] = '_stock_status';
$args['orderby'] = array( 'meta_value' => 'ASC' );
}
return $args;
}
任何帮助将不胜感激。
解决方案
您应该尝试按 DESC 顺序按库存排序。
// Apply Sort By In Stock
add_filter( 'woocommerce_get_catalog_ordering_args', 'woo_add_postmeta_ordering_args' );
function woo_add_postmeta_ordering_args( $args_sort ) {
$orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : '';
switch( $orderby_value ) {
case 'in-stock':
$args_sort['orderby'] = '_stock_status';
$args_sort['order'] = 'ASC';
break;
}
return $args_sort;
}
// Add "Sort By In Stock" option in dropdown
add_filter( 'woocommerce_default_catalog_orderby_options', 'woo_add_new_postmeta_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'woo_add_new_postmeta_orderby' );
function woo_add_new_postmeta_orderby( $sortby ) {
$sortby['in-stock'] = __( 'Sort By In Stock', 'woocommerce' );
return $sortby;
}
有关更多详细信息,您应该这个问题/答案 - https://stackoverflow.com/a/69052764/16560548
推荐阅读
- javascript - Angular i18n - 为所有语言生成单个 dist 文件夹,而不是为每种语言生成一个文件夹
- python - 意外的关键字参数“传播”
- javafx - 当 GUI 最小化或系统锁定时,Jemmy FX 测试不起作用
- mongodb - Mongodb Sharding的连接问题
- matlab - 根据零到一之间的值更改颜色强度的范围
- node.js - React/Node.js/Nodemailer - Heroku 应用程序因 NPM Err 和 H10 错误代码而崩溃
- android - Kotlin:sharedPreferences NullPointerException
- python-3.x - 遍历两个列表/列,条件添加到第三个列表/列
- sql - SQL exec 语句后的对象名称无效
- python - python中的乘法表不起作用