web-dev-qa-db-fra.com

Comment puis-je filtrer get_users () de la même manière que pre_get_posts?

J'ai filtré les publications, pages et custom_post_types en fonction des valeurs du champ usermeta personnalisé $ current_user à l'aide de pre_get_posts ().

Existe-t-il une méthode/fonction similaire pour modifier get_users () en fonction des valeurs du champ personnalisé $ current_user? J'ai cherché un peu, mais suis arrivé les mains vides.

Par exemple, supposons que je veuille filtrer les résultats de get_users () pour un éditeur avec la méta personnalisée "ville" de "Paris" pour ne renvoyer que la liste des utilisateurs ayant la même valeur dans le champ "ville". De même, un éditeur avec "Rome" dans "ville" ne devrait avoir que des utilisateurs de "Rome", et ainsi de suite ...

Idéalement, j'aimerais que ce paramètre soit ajouté à tous les get_users () effectués par les fonctions du site Web à la fois en back-end et en front-end, tant que l'utilisateur est connecté.

Est-ce possible dans WordPress?

Je vous remercie.

3
Andrei Gheorghiu

Il y a l'action pre_user_query appelée dans la méthode prepare_query() de la classe WP_User_Query définie dans wp-includes/user.php:

do_action_ref_array( 'pre_user_query', array( &$this ) );
2
Milo

Supposons que vous avez le $ current_user town sauvegardé dans une variable $ town . La méta-clé est la ville. Vous pouvez utiliser get_users comme suit:

get_users(
   'meta_key' => 'town',
   'meta_value' => $town,
   'meta_compare' => '='
);
0
Hameedullah Khan