Intereting Posts

Как запрашивать пользователей, у которых есть пустые first_name?

Пока я пробовал эти три варианта, и все три из них не работают.

Опция 1

$options = array( 'meta_key' => 'first_name', 'meta_value' => '', 'meta_compare' => '=', ); $users = get_users( $options ); 

Вариант 2

 $options = array( 'meta_key' => 'first_name', 'meta_value' => null, 'meta_compare' => '=', ); $users = get_users( $options ); 

Вариант 3

 $options = array( 'meta_query' => array( array( 'key' => 'first_name', 'compare' => 'NOT EXISTS', ), ) ); $users = get_users( $options ); 

Похоже, что вы ищете мета-ключи first_name с пустыми значениями метаданных строки:

 $options = array( 'meta_query' => array( array( 'key' => 'first_name', 'value' => '', 'compare' => '=', ), ) ); $users = get_users( $options ); 

который генерирует такой SQL-запрос:

 SELECT wp_users.* FROM wp_users INNER JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.user_id ) WHERE 1=1 AND ( ( wp_usermeta.meta_key = 'first_name' AND wp_usermeta.meta_value = '' ) ) ORDER BY user_login ASC 

Обратите внимание, что

 $options = array( 'meta_key' => 'first_name', 'meta_value' => '', 'meta_compare' => '=', ); $users = get_users( $options ); 

генерирует такой SQL-запрос:

 SELECT wp_users.* FROM wp_users INNER JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.user_id ) WHERE 1=1 AND ( wp_usermeta.meta_key = 'first_name' ) ORDER BY user_login ASC ; 

Используется под кодом. он возвращает все данные, которые не имеют ключа first_name в базе данных или у которого есть пустое имя first_name

 $args = array( 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'first_name', 'value' => '', 'compare' => '=', ), array( 'key' => 'first_name', 'value' => '', 'compare' => 'NOT EXISTS', ), ) ); $users = get_users( $args ); var_dump($users);exit;