2017-12-08 6 views
0

私はユーザのリストをmetakeyでソートしようとしています。私はメタキーuser_last_loginを設定したことを意味します。一部のユーザーはこのメタキーを持っていません。一部のユーザーがそれを持っています。すべてのwp_usersを取得metakeyで並べ替え

私は単一のクエリで両方のユーザーを取得したいが、もしmetakeyが存在すれば、それらは最初に来て残りは最後に来るべきである。

は、ここに私のクエリ

$meta_query_args = array(
      'relation' => 'OR', // Optional, defaults to "AND" 
      array(
      'key'  => 'user_last_login',     
      'compare' => 'Not Exists' 
      ), 
      array(
      'key'  => 'user_last_login',     
      'compare' => 'Exists' 
      ) 
     ); 
     $meta_query = new WP_Meta_Query($meta_query_args); 


      $args = array(
       'offset' => $paged ? ($paged - 1) * $number : 0, 
       'number' => $number, 
       'fields' => 'all', 
       'orderby'=>'user_last_login',     
       'exclude' => array(get_current_user_id()), 

       'meta_query' =>$meta_query 
      ); 

      $users = get_users($args); 

助けてくださいです。

答えて

1

meta_valueで注文する場合は、引数は、meta_keyである必要があります。変更されたコードは次のとおりです。

$query_args = array(
    'relation' => 'OR', 
    array(
     'key'  => 'user_last_login',     
     'compare' => 'NOT EXISTS' 
    ), 
    array(
     'key'  => 'user_last_login',     
     'compare' => 'EXISTS' 
    ) 
); 

$meta_query = new WP_Meta_Query($query_args); 

$args = array(
    'offset' => $paged ? ($paged - 1) * $number : 0, 
    'number' => $number, 
    'fields' => 'all', 
    'meta_key' => 'user_last_login', 
    'orderby' => 'meta_value', 
    'order' => 'ASC',     
    'exclude' => array(get_current_user_id()), 
    'meta_query' => $meta_query 
); 

$users = get_users($args); 

希望するものがあります。

+0

メタキーを持っている人だけが戻ってきます。私は20人のユーザーを持っています。 3人のユーザーがデータベースにメタを持っています。上記のクエリを使用しているユーザーが3人しかいません。残りの17人のユーザーにはそのメタキーがありません。 –

+0

次に、なぜメタクエリを指定しているのですか?meta_queryの部分を削除するだけです。 –

+0

はい、ありがとうございます。今働いている。今私は正しくリストを取得することができます。 –

関連する問題