Recherche dans la table principale
Utilisez simplement WP_User_Queryavec un argument de recherche.
Donc, si vous souhaitez rechercher par exemple un utilisateur avec un mot-clé dans sa user_emailou des colonnes similaires du {$wpdb->prefix}userstableau, vous pouvez effectuer les opérations suivantes:
$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();
Gardez à l'esprit qu'il *s'agit d'un caractère générique. Donc , limitant par exemple user_emailà un seul domaine vous donnerait la chaîne de recherche suivante: *@example.com.
La searchchaîne a des caractéristiques "magiques": La valeur par search_columnsdéfaut est ...
user_emailsi @est présent dans l' searchargument.
user_loginet IDsi l' searchargument est numérique
user_urlsi la searchchaîne contient http://ouhttps://
- ou ...
user_loginet user_nicenamesi une chaîne est présente.
Tous ces paramètres par défaut ne sont définis que si aucun search_columns argument n'a été spécifié.
Recherche dans la méta-table
Si vous souhaitez rechercher par exemple first_nameou last_name, vous devrez faire un meta_querycar ils ne font pas partie du tableau principal:
$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();
Assurez-vous de récupérer la bonne chaîne de recherche. Normalement, ce serait le cas get_query_var('s');, mais cela pourrait - en fonction de votre formulaire name/idégalement être quelque chose de différent que vous pourriez vouloir récupérer en utilisant $_GET['user_search']par exemple. Assurez-vous de bien le supprimer et de supprimer les espaces blancs indésirables du début et de la fin de la chaîne.
Gardez à l'esprit que c'est array( array() )la relationclé. Si vous souhaitez simplement rechercher une seule clé, il peut être plus simple de procéder comme suit:
$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();
Requête finale
Le résultat peut ressembler à ce qui suit:
$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();