2016-09-24 56 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空元值否则将无法正常工作。