按销售价格和库存状态对产品进行分类

时间:2021-06-26 作者:vahid sabet

我想先按销售价格、库存和正常价格对产品进行分类,但在任何地方都找不到解决方案。以下是我已实施但未获得解决方案的内容:

add_filter( \'woocommerce_get_catalog_ordering_args\', \'avs_first_sort_by_stock_amount\', 9999 );

function avs_first_sort_by_stock_amount( $args ) {
   if (is_product_category() && !isset( $_GET[\'orderby\'] )) {
       $args = array(
        \'meta_query\' => array(
            \'relation\' => \'AND\',
                array(
                    $args[ \'meta_key\' ] = \'_stock_status\',
                    $args[ \'orderby\' ] = \'meta_value\',
                    $args[ \'order\' ] = \'ASC\',
                ),                    
                array(
                    $args[ \'meta_key\' ] = \'_sale_price\',
                    $args[ \'orderby\' ] = \'meta_value_num\',
                    $args[ \'order\' ] = \'DESC\',
                ),                    
                array(
                    $args[ \'meta_key\' ] = \'_price\',
                    $args[ \'orderby\' ] = \'meta_value_num\',
                    $args[ \'order\' ] = \'DESC\',
                )
        )
    ); 

     return $args;
   
}
提前谢谢。

1 个回复
SO网友:Buttered_Toast

试试这个。

我按照WP\\U查询文档构建了这个。

$args = [
    \'meta_query\' => [
        \'relation\' => \'AND\',
        [
            \'_stock_status\' => [
                \'key\'     => \'_stock_status\',
                \'compare\' => \'EXISTS\',
            ],
            \'_sale_price\' => [
                \'key\'     => \'_sale_price\',
                \'compare\' => \'EXISTS\',
            ],
            \'_price\' => [
                \'key\'     => \'_price\',
                \'compare\' => \'EXISTS\',
            ]
        ]
    ],
    \'orderby\' => [
        \'_stock_status\' => \'ASC\',
        \'_sale_price\'   => \'DESC\',
        \'_price\'        => \'DESC\'
    ]
];
这将按库存第一、销售价格第二和价格第三进行订购。

没有办法同时按两个或多个值排序,至少我不知道或无法找到。