Поиск в главной таблице
Просто используйте WP_User_Query
с аргументом поиска.
Поэтому, если вы хотите найти, например, пользователя с ключевым словом в его user_email
или похожих столбцах {$wpdb->prefix}users
таблицы, вы можете сделать следующее:
$users = new WP_User_Query( array(
'search' => '*'.esc_attr( $your_search_string ).'*',
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
'user_url',
),
) );
$users_found = $users->get_results();
Имейте в виду, что *
это подстановочный знак. Так ограничение, например, user_email
для одного домена даст вам следующую строку для поиска: *@example.com
.
search
Строка имеет некоторые «магические» особенности: search_columns
значение по умолчанию ...
user_email
если @
присутствует в search
арг.
user_login
и ID
если search
аргумент числовой
user_url
если search
строка содержит http://
илиhttps://
- или ...
user_login
и user_nicename
если строка присутствует.
Все эти значения по умолчанию устанавливаются, только если не search_columns
указан аргумент.
Поиск в мета-таблице
Если вы хотите выполнить поиск, например, first_name
или last_name
, то вам нужно будет выполнить, meta_query
поскольку они не являются частью основной таблицы:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $search_string,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $search_string,
'compare' => 'LIKE'
)
)
) );
$users_found = $users->get_results();
Убедитесь, что вы получили правильную строку поиска. Обычно это так get_query_var('s');
, но это может - в зависимости от вашей формы name/id
также быть чем-то другим, что вы, возможно, захотите получить, используя, $_GET['user_search']
например. Убедитесь, что вы правильно удалили его и удалите ненужные пробелы в начале и конце строки.
Имейте в виду , что это array( array() )
как есть это relation
ключ. Если вы просто хотите выполнить поиск по одному ключу, может быть проще выполнить следующее:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'meta_key' => 'first_name',
'meta_value' => $search_string,
'meta_compare' => 'LIKE',
) );
$users_found = $users->get_results();
Последний запрос
Результат может выглядеть следующим образом:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'search' => "*{$search_string}*",
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
'user_url',
),
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $search_string,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $search_string,
'compare' => 'LIKE'
)
)
) );
$users_found = $users->get_results();