web-dev-qa-db-fra.com

Requête Tous les utilisateurs qui ont post

J'ai cette requête jusqu'à présent:

        $user_args = array(
            'role'    => 'frontend_vendor',
            'orderby' => 'display_name', 
            'order'   => 'ASC',      
            'number'  => $no,
            'offset'  => $offset
        );

        $user_query = new WP_User_Query( $user_args );

Maintenant, ce que je veux faire est d'obtenir tous les utilisateurs qui n'a que des publications, j'ai un exemple de requête que je veux faire. Comment puis-je faire cela avec 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

Si l'utilisateur n'a pas de message, il ne doit pas être sélectionné.

1
Marlon Buendia

ajoutez ceci dans vos arguments '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
    );
2
kenn

Voici ci-dessous quelques options possibles:

lien codex

Order & Orderby Parameters on peut ajouter post_count, sinon aucun paramètre tel que "posts_per_author" n'existe pas dans wp_query refrence

s'il vous plaît inclure orderby dans votre requête

'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)

Utilisez le nombre dans le code selon les besoins.

Obtenir les auteurs ou les utilisateurs

<?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" peut aider dans ce cas.

avec requête directe s'il vous plaît voir ce post:

Obtenir les utilisateurs avec au moins une publication

Merci!

0
jas