在 WooCommerce 中按日期和库存状态查询产品和订单

Query products and order by date and stocks status in WooCommerce

我已将默认 orderby 查询设置为日期。

如何添加另一个参数以首先在库存产品中显示。

add_filter('woocommerce_get_catalog_ordering_args', 'shop_default_orderby_date');
function shop_default_orderby_date ( $args ) {  
    if( is_shop() && ( ! isset($_GET['orderby']) || 'menu_order' === $_GET['orderby'] ) ) {
    $args['meta_key'] = '';
    $args['orderby'] = 'date';
    $args['order'] = 'desc'; 
    return $args;
    }
}

我遇到了

有没有办法将这两者结合起来?

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

    $query->set( 'meta_key', '_stock_status' );
    $query->set( 'orderby', 'meta_value menu_order' );
}

按日期降序展示商品(新品先展示),缺货商品移至列表末尾的解决方案:

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

    $query->set( 'meta_key', '_stock_status' );
    $query->set( 'orderby', array( 'meta_value' => 'ASC', 'date' => 'DESC' )  );
}