2016-09-24 69 views
0

我需要通過兩個元字段來訂購WP_Query:meta-order和meta-last-name。首先按數字順序按元順序排列,如果爲空白,則按meta-last-name ASC排序。我該怎麼做,文件不是很清楚。我試過這個,但它不起作用。WP_Query由兩個元字段排序

array( 
    'post_type' => 'student', 
    'post_status' => 'publish', 
    'order'  => 'ASC', 
    'orderby'  => 'meta_value', 
    'meta_key'  => 'meta-order meta-last-name', 
); 
+0

可能重複的[如何通過多個元鍵進行排序?](http://stackoverflow.com/questions/17745334/how-to-order-by-multiple-meta-keys) – MarZab

回答

0

您將需要使用pre_get_posts操作才能實現此目的。 有關如何操作,請參閱https://wordpress.stackexchange.com/q/169999的答案。

+0

我看不到如何得到這個例子來工作在我的情況。不管怎樣,謝謝你! –

0

這爲我工作:

array(
    'post_type' => 'student', 
    'meta_query' => array(
    'relation' => 'OR', 
    'custom_order_clause' => array(
     'key' => 'meta-custom-order', 
     'compare' => 'LIKE', 
    ), 
    'last_name_clause' => array(
     key' => 'meta-last-name', 
     'compare' => '=', 
    ), 
    ), 
    'orderby' => array(
    'custom_order_clause' => 'ASC', 
    'last_name_clause' => 'ASC' 
    ), 
) 

警告: 確保您刪除DB空元值否則將無法正常工作。