2017-06-22 65 views
0

我想按平均評級(DESC)和價格(ASC)在類別頁面中訂購我的產品。WooCommerce的多重訂單

| id | avgrating | price | 
| 1 |  4  |  10 | 
| 2 |  4  |  5 | 
| 3 |  5  |  7 | 

訂單:3,2,1

所以我試着用:

$args['meta_key'] = '_wc_average_rating'; 
$args['orderby'] = array(
    'meta_value_num' => 'DESC', 
    'price' => 'ASC', 
); 

但他們不是按價格排序(也)。我也用_price替換price,結果相同。

我使用的是最新版本的WordPress(4.8)和WooCommerce(3.0.8)。

編輯:

如果我使用:

$args['meta_key'] = '_wc_average_rating'; 
$args['orderby'] = array(
    'meta_value_num' => 'DESC', 
    'ID'    => 'DESC', 
); 

排序ID可以作爲例外,DESC的平均等級,然後DESC。所以,我必須改變IDprice,但我不能讓它工作。

回答

1

檢查通過傳遞order帶參數

檢查這些,

add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args'); 

function custom_woocommerce_get_catalog_ordering_args($args) { 
    $orderby_value = isset($_GET['orderby']) ? woocommerce_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby')); 
    if ('sort_by_type' == $orderby_value) { 
     $args['orderby'] = 'meta_value_num title'; 
     $args['order'] = 'ASC'; 
     $args['meta_key'] = 'sort_by_type'; 

    } 

    if ('_wc_average_rating' == $orderby_value) { 
     $args['orderby'] = 'meta_value_num title'; 
     $args['order'] = 'DESC'; 
     $args['meta_key'] = '_wc_average_rating'; 
    } 

    return $args; 
} 
+0

它不工作,返回:3,2,1。我認爲這是默認順序或這樣的事情.. – Cixasug

+0

我已經用'_wc_average_rating'試過了。 :( – Cixasug

+0

都是不同的條件,或者你想要兩者合併?還列出了這裏的順序(你需要2,1,3)? –