Ricerca nella tabella principale
Basta usare WP_User_Querycon un argomento di ricerca.
Quindi, se vuoi cercare un utente con una parola chiave nelle sue user_emailcolonne o simili dalla {$wpdb->prefix}userstabella, puoi fare quanto segue:
$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();
Tieni presente che *è un carattere jolly. Così, limitando ad esempio, la user_emaila un singolo dominio darebbe la seguente stringa di ricerca: *@example.com.
La searchstringa ha alcune caratteristiche "magiche": l' search_columnsimpostazione predefinita è ...
user_emailse @è presente searchnell'arg.
user_logine IDse l' searcharg è numerico
user_urlse la searchstringa contiene http://ohttps://
- oppure ...
user_logine user_nicenamese è presente una stringa.
Tutti questi valori predefiniti vengono impostati solo se non è search_columns stato specificato alcun argomento.
Ricerca nella tabella meta
Se vuoi cercare per esempio first_nameo last_name, allora dovrai fare un meta_querydato che non fanno parte della tabella principale:
$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();
Assicurati di recuperare la stringa di ricerca corretta. Normalmente sarebbe get_query_var('s');, ma potrebbe - a seconda del tuo modulo name/idessere anche qualcosa di diverso che potresti voler recuperare usando $_GET['user_search']ad esempio. Assicurati di farlo correttamente e rimuovere lo spazio bianco indesiderato dall'inizio e dalla fine della stringa.
Tieni presente che questo è un in array( array() )quanto c'è la relationchiave. Se si desidera solo cercare una chiave singola, potrebbe essere più semplice eseguire le seguenti operazioni:
$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();
Query finale
Il risultato potrebbe essere simile al seguente:
$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();