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:
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.
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.
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.