Ich sehe, dass es möglich ist, eine Benutzerabfrage nach der Anzahl der Beiträge jedes Benutzers zu sortieren. Ist es jedoch möglich, Benutzer mit null Beiträgen vom Ergebnis auszuschließen? In der Wp_User_Query-Klasse gibt es eine pre_user_query
Aktion, aber Abfragezeichenfolgen stellen eine große Schwachstelle dar. Daher bin ich mir nicht sicher, welche Art von Filteraktion ich hier verwenden möchte.
wp-user-query
Helgatheviking
quelle
quelle
post_count
== 0 sind , einfach aus den Ergebnissen zu streichen?get_posts_by_author_sql
Funktion, die das SQL für dieget_authors()
Abfrage generiert . Benutzer müssen über einen veröffentlichten oder privaten Beitrag verfügen, um in die Ergebnisse aufgenommen zu werden. #facepalmget_authors()
Ergebnis als vorübergehend speichern möchte ... dann kann ich einfach den aktuellen Autor überspringen, ohne jedes Mal eine Abfrage durchführen zu müssen.Antworten:
Nun, ich habe 2 Lösungen gefunden.
Lösung 1 - foreach Schleife und überprüfen Sie jeden Benutzer
Dieser basiert auf der @ GhostToast-Lösung, jedoch mit aktualisierten WordPress-Funktionen
Lösung 2 - Fancy Pants
pre_user_query
AktionDaran habe ich gedacht, als ich meine Frage gestellt habe, als ich die
pre_user_query
Aktion in derWP_User_Query
Klasse gefunden habe. Wenn Siepost_count
alsorderby
Parameter übergeben, verbindet eine ausgefallene SQL-Abfrage, die ich selbst nie herausgefunden hätte, die richtigen Tabellen miteinander. Also habe ich diese Join-Anweisung kopiert und zu meiner eigenen hinzugefügt. Dies wäre besser, wenn ich zuerst prüfen könnte, ob es vorhanden ist, bevor ich es hinzufüge ... Vielleicht werde ich in Zukunft eine Zeichenfolgenübereinstimmung verwenden. Aber jetzt, da ich derjenige bin, der die Abfrage erstellt, weiß ich, dass sie nicht vorhanden ist und ich werde mich noch nicht darum kümmern. Der Code stellte sich also so heraus:und dann zu benutzen
Die Idee für einen
query_id
Parameter stammt aus einer Einführung in WP_User_ClassWelches ist auch nur eine sehr gute Referenz auf
WP_User_Query
quelle
Seit 4.4 können Sie einfach den Parameter `has_published_posts 'verwenden.
Beispiel:
has_published_posts
kann entweder wahr / falsch (oder null) oder ein Array von Beitragstypen sein (wie in diesem Beispiel).Hinweis: Ich verwende hier Transienten, da diese spezielle Abfrage je nach System sehr umfangreich werden kann. Daher ist es sinnvoll, sie für zukünftige Verwendungen zu speichern.
quelle
Einreichung als Antwort für den Abschluss:
quelle
get_users_with_role()
ist keine WordPress-Funktion oder habe ich zu lange auf meinen Computer geschaut?"get_users_with_role": 0 matches across 0 files
. Auchget_usernumposts
wird abgeschrieben, verwendencount_user_posts()