Пошук головної таблиці
Просто використовуйте 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();