Durchsuchen der Haupttabelle
Einfach WP_User_Querymit einem Suchargument verwenden.
Wenn Sie beispielsweise nach einem Benutzer mit einem Schlüsselwort in seinen user_emailoder ähnlichen Spalten in der {$wpdb->prefix}usersTabelle suchen möchten, können Sie Folgendes tun:
$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();
Denken Sie daran, dass dies *ein Platzhalter ist. Wenn Sie beispielsweise die user_emailDomain auf eine einzelne Domain beschränken, erhalten Sie die folgende Suchzeichenfolge : *@example.com.
Die searchZeichenfolge hat einige "magische" Funktionen: Die search_columnsStandardeinstellung ist ...
user_emailwenn @im searcharg vorhanden ist.
user_loginund IDwenn das searchArgument numerisch ist
user_urlwenn die searchZeichenfolge http://oder enthälthttps://
- oder ...
user_loginund user_nicenamewenn eine Zeichenfolge vorhanden ist.
Alle diese Standardeinstellungen werden nur festgelegt, wenn kein search_columns Argument angegeben wurde.
Durchsuchen der Metatabelle
Wenn Sie beispielsweise nach first_nameoder suchen möchten last_name, müssen Sie Folgendes tun, meta_queryda sie nicht Teil der Haupttabelle sind:
$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();
Stellen Sie sicher, dass Sie die richtige Suchzeichenfolge abrufen. Normalerweise wäre das so get_query_var('s');, aber es könnte sein - abhängig von Ihrem Formular name/idauch etwas anderes, das Sie $_GET['user_search']beispielsweise mit abrufen möchten . Stellen Sie sicher, dass Sie es richtig entfernen und unerwünschte Leerzeichen am Anfang und Ende der Zeichenfolge entfernen.
Denken Sie daran , dass dies eine ist , array( array() )da es der ist relationSchlüssel. Wenn Sie nur einen einzelnen Schlüssel durchsuchen möchten, ist es möglicherweise einfacher, einfach Folgendes zu tun:
$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();
Letzte Abfrage
Das Ergebnis könnte ungefähr so aussehen:
$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();