web-dev-qa-db-fra.com

Formulaire de recherche personnalisé pour afficher uniquement les utilisateurs

J'essaie de créer un formulaire de recherche personnalisé pour l'une de mes pages. J'ai besoin du formulaire de recherche pour pouvoir rechercher des utilisateurs. Non seulement il aura besoin de rechercher des utilisateurs, mais par prénom, nom, etc. Quelque chose de similaire à ceci:

enter image description here

La recherche par défaut WP ne me permet pas de rechercher des utilisateurs sur mon site. J'utilise le plug-in 'Rechercher tout' et n'arrive toujours pas à faire apparaître des données d'utilisateur dans mes recherches.

Toute aide est très appréciée.

MODIFIER

Voici mon formulaire:

<?php 
    global $wpdb;
    $authors = $wpdb->get_results("SELECT ID, display_name FROM $wpdb->users WHERE user_nicename != 'admin' ORDER BY display_name LIMIT 10"); 
?>

<form action="<?php bloginfo('siteurl'); ?>" id="memberform" method="get">
    <div class="first_name">
        <select id="firstNameDrop" name="s">
            <option selected value="First Name">First Name</option>
            <?php
                foreach($authors as $author) {
                    $author_info = get_userdata($author->ID);
                    $name = $author_info->first_name;
                    echo '<option value="'.$name.'">'.$name.'</option>';
                }
            ?>
        </select>
    </div>
    <input type="submit" class="submit" name="submit" value="Search" />
</form>

Cela me permet d'avoir ma liste déroulante avec tous les utilisateurs triés par prénom, et lorsque je clique sur Rechercher, cela me conduit à ma page de recherche et affiche tous les messages correspondant à ma recherche. Tout va bien, mais j'en ai besoin pour obtenir UNIQUEMENT les informations des utilisateurs - telles que le nom, le nom, l'avatar, la description, etc. et les messages NON.

1
Romes

Je ne vais pas écrire votre formulaire pour vous, mais créer un formulaire et le soumettre à une page pour effectuer le traitement, ou utiliser l'API AJAX . Puis utilisez WP_User_Query pour rechercher des utilisateurs. C'est une classe très semblable à WP_Query qui devrait vous permettre de faire tout ce que vous voulez, y compris la recherche de métadonnées d'utilisateur à partir de la table $wpdb->usermeta en passant un paramètre meta_query semblable au suivant du Codex:

$args = array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'country',
            'value' => 'Israel',
            'compare' => '='
        ),
        array(
            'key' => 'age',
            'value' => array( 20, 30 ),
            'type' => 'numeric',
            'compare' => 'BETWEEN'
        )
    )
 );
$user_query = new WP_User_Query( $args );

Si vous rencontrez des problèmes, modifiez la question pour y inclure votre code (tentative de travail) et davantage de détails, et je modifierai la réponse.

3
s_ha_dum