2016-09-24 6 views
0

私は、2つのメタフィールド、すなわちメタオーダーとメタラストネームでWP_Queryを注文する必要があります。最初にメタオーダーで数値的に、空白の場合は、meta-last-name ASCでオーダーします。どのようにすればよいのですか、その文書はあまり明確ではありません。私はこれを試しましたが、うまくいきません。WP_Query 2つのメタフィールドによる注文

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' 
    ), 
) 

はCAVEAT: そうでない場合、これは動作しませんあなたがDBから空のメタ値を削除していることを確認します。

関連する問題