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://ou- https://
- ou ... user_loginetuser_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();