Ich habe diese Frage bisher:
$user_args = array(
'role' => 'frontend_vendor',
'orderby' => 'display_name',
'order' => 'ASC',
'number' => $no,
'offset' => $offset
);
$user_query = new WP_User_Query( $user_args );
Jetzt möchte ich alle Benutzer abrufen, die nur Posts haben. Ich habe eine Beispielabfrage, die ich ausführen möchte. Wie mache ich das mit wp_query()
?
SELECT users.id, posts.id
FROM wp_users
RIGHT JOIN wp_posts
ON wp_users.id = wp_posts.user_id
WHERE wp_posts.post_type = 'downloads'
AND wp_users.role = 'frontend_vendor'
ORDER BY display_name
ASC
LIMT 8
OFFEST 0
Wenn der Benutzer keine Posts hat, sollte er nicht ausgewählt werden.
füge dies in deine Argumente ein 'query_id' => 'authors_with_posts',
$user_args = array(
'role' => 'frontend_vendor',
'orderby' => 'display_name',
'query_id' => 'authors_with_posts',
'order' => 'ASC',
'number' => $no,
'offset' => $offset
);
Hier sind einige mögliche Optionen:
Order & Orderby Parameter wir können post_count hinzufügen, sonst gibt es keinen solchen Parameter wie "posts_per_author" existiert nicht in wp_query refrence
bitte geben Sie orderby in Ihre Anfrage an
'orderby' => 'post_count'
FROM wp_users INNER JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.user_id ) 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)
Verwenden Sie die Anzahl im Code entsprechend der Anforderung.
<?php $list = wp_list_authors('show_fullname=1&optioncount=1&orderby=post_count&order=DESC&number=3'); ?>
<?php echo"<pre>"; print_r($list); echo"</pre>"; ?>
"optioncount" kann in diesem Fall helfen.
bei direkter abfrage bitte diesen beitrag lesen:
Benutzer mit mindestens einem Beitrag abrufen
Vielen Dank!