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
//new query with default args
$author_query = new WP_User_Query();
// Get the results
$authors = $author_query->get_results();
if( $authors ) {
foreach( $authors as $author ) {
if ( count_user_posts( $author->id ) >= 1 ) {
echo $author->display_name . '</br>';
}
}
} else {
echo "no users found";
}
Lösung 2 - Fancy Pants pre_user_query
Aktion
Daran habe ich gedacht, als ich meine Frage gestellt habe, als ich die pre_user_query
Aktion in der WP_User_Query
Klasse gefunden habe. Wenn Sie post_count
als orderby
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:
function authors_with_posts( $query ) {
if ( isset( $query->query_vars['query_id'] ) && 'authors_with_posts' == $query->query_vars['query_id'] ) {
$query->query_from = $query->query_from . ' LEFT OUTER JOIN (
SELECT post_author, COUNT(*) as post_count
FROM wp_posts
WHERE post_type = "post" AND (post_status = "publish" OR post_status = "private")
GROUP BY post_author
) p ON (wp_users.ID = p.post_author)';
$query->query_where = $query->query_where . ' AND post_count > 0 ';
}
}
add_action('pre_user_query','authors_with_posts');
und dann zu benutzen
$args = ( array( 'query_id' => 'authors_with_posts' ) );
$author_query = new WP_User_Query( $args );
Die Idee für einen query_id
Parameter stammt aus einer Einführung in WP_User_Class
Welches ist auch nur eine sehr gute Referenz auf WP_User_Query
post_count
== 0 sind , einfach aus den Ergebnissen zu streichen?