Przeszukiwanie głównego stołu
Po prostu użyj WP_User_Queryz argumentem wyszukiwania.
Jeśli więc chcesz na przykład wyszukać użytkownika ze słowem kluczowym w jego user_emaillub podobnych kolumnach z {$wpdb->prefix}userstabeli, możesz wykonać następujące czynności:
$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();
Pamiętaj, że *jest to symbol wieloznaczny. Więc ograniczając na przykład user_emaildo jednej domeny nie daje następujący łańcuch wyszukiwania: *@example.com.
searchCiąg ma pewne cechy „magicznych” wybrać: search_columnsDomyślnie do ...
user_emailjeśli @jest obecny w searcharg.
user_logina IDjeśli searcharg jest liczbą
user_urljeśli searchciąg zawiera http://lubhttps://
- lub ...
user_logina user_nicenamejeśli łańcuch jest obecny.
Wszystkie te wartości domyślne są ustawione tylko wtedy, gdy nie search_columns podano argumentu.
Przeszukiwanie meta tabeli
Jeśli chcesz wyszukać na przykład first_namelub last_name, musisz zrobić, meta_queryponieważ nie są one częścią głównej tabeli:
$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();
Upewnij się, że odzyskałeś odpowiedni ciąg wyszukiwania. Zwykle tak get_query_var('s');, ale może być - w zależności od formy name/id, może być też coś innego, co możesz chcieć odzyskać, $_GET['user_search']na przykład. Upewnij się, że poprawnie go zaszyfrujesz i usuniesz niechciane białe znaki z początku i końca łańcucha.
Należy pamiętać, że jest to array( array() )jak tam jest relationklucz. Jeśli chcesz po prostu przeszukać pojedynczy klucz, może być łatwiej wykonać następujące czynności:
$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();
Ostatnie zapytanie
Wynik może wyglądać podobnie do następującego:
$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();