Wpdb-> last_query retorna consulta incorreta

Uso o WordPress 4.8 e quero obter usuários por meta-valores. Eu quero que os usuários não estejam conectados desde 7 dias, e com ’email_not_logged’ meta vazio.

Então eu tentei:

$users = get_users(array( 'meta_query' => array( 'relation' => 'AND', array( 'meta_key' => 'last_login', //'meta_value' => 'DATE_SUB(NOW(),INTERVAL 7 DAY)', 'meta_value' => date('Ymd H:i', strtotime('-7 days')), 'meta_compare' => ' 'DATE', ), array( 'meta_key' => 'email_not_logged', 'meta_compare' => 'NOT EXISTS', ) )) ); global $wpdb; echo "
"; print_r($wpdb->last_query); echo "

";

Eu não sei por que, mas eu tenho:

SELECIONE user_id, meta_key, meta_value FROM ma_usermeta WHERE user_id IN (82) ORDER BY umeta_id ASC

Como posso ter uma boa consulta para testá-lo?

Mas, isso funciona:

 $users = get_users( array( 'meta_key' => 'last_login', //'meta_value' => 'DATE_SUB(NOW(),INTERVAL 7 DAY)', 'meta_value' => date('Ymd H:i:s', strtotime('-7 days')), 'meta_compare' => ' 'DATE', ) ); 

Eu uso mal meta_query?

Solutions Collecting From Web of "Wpdb-> last_query retorna consulta incorreta"

get_users() é um invólucro de conveniência em torno de WP_User_Query . Talvez você possa usar isso diretamente, por exemplo,

 $user_search = new WP_User_Query( array( 'meta_query' => array( 'relation' => 'AND', array( 'meta_key' => 'last_login', //'meta_value' => 'DATE_SUB(NOW(),INTERVAL 7 DAY)', 'meta_value' => date('Ymd H:i', strtotime('-7 days')), 'meta_compare' => '< =', 'type' => 'DATE', ), array( 'meta_key' => 'email_not_logged', 'meta_compare' => 'NOT EXISTS', ) ) ) ); 

E, em seguida, veja o SQL que ele gera ao imprimir $user_search->request ?