Je vois qu'il est possible de trier une requête utilisateur en fonction du nombre de publications de chaque utilisateur, mais est-il possible d'exclure des utilisateurs sans publication du résultat? Dans la classe Wp_User_Query, il y a une pre_user_query
action, mais les chaînes de requête sont un énorme point faible, donc je ne sais pas quel type d'action de filtrage je voudrais utiliser ici.
wp-user-query
helgatheviking
la source
la source
post_count
== 0?get_posts_by_author_sql
fonction qui génère le SQL pour laget_authors()
requête. Les utilisateurs doivent avoir un article publié ou privé pour être inclus dans les résultats. #facepalmget_authors()
résultat en tant que transitoire ... alors je peux simplement ignorer l'auteur actuel sans avoir besoin de faire une requête à chaque fois.Réponses:
Eh bien, j'ai trouvé 2 solutions.
Solution 1 - foreach boucle et vérifier chaque utilisateur
Celui-ci est basé sur la solution de @ GhostToast, mais avec des fonctions WordPress mises à jour
Solution 2 -
pre_user_query
Action de pantalon fantaisieC'est à cela que je pensais quand j'ai posté ma question une fois que j'ai trouvé l'
pre_user_query
action enWP_User_Query
classe. Si vous passez enpost_count
tant queorderby
paramètre, alors certaines requêtes SQL fantaisistes que je n'aurais jamais imaginées moi-même arrivent à joindre les tables appropriées. J'ai donc copié cette déclaration de jointure et l'ajoutée à la mienne. Ce serait mieux si je pouvais d'abord vérifier sa présence avant de l'ajouter ... peut-être que j'utiliserai une correspondance de chaîne à l'avenir. Mais pour l'instant puisque c'est moi qui configure la requête, je sais qu'elle n'est pas là et je ne m'en inquiéterai pas encore. Donc, le code s'est avéré comme suit:puis de l'utiliser
L'idée d'un
query_id
paramètre est tirée d'une introduction à WP_User_ClassCe qui est aussi juste une très bonne référence sur
WP_User_Query
la source
Depuis 4.4, vous pouvez simplement utiliser le paramètre `has_published_posts '.
Exemple:
has_published_posts
peut être soit vrai / faux (ou nul), soit un tableau de types de messages (comme dans cet exemple).Remarque: J'utilise des transitoires ici car cette requête spécifique peut devenir assez lourde en fonction du système, il est donc judicieux de la stocker pour de futures utilisations.
la source
Soumettre comme réponse à la clôture:
la source
get_users_with_role()
n'est pas une fonction WordPress ou ai-je regardé mon ordinateur trop longtemps?"get_users_with_role": 0 matches across 0 files
. Est égalementget_usernumposts
amorti, utilisezcount_user_posts()