web-dev-qa-db-ja.com

投稿したすべてのユーザーを照会

私はこれまでのところこの質問をしています:

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

        $user_query = new WP_User_Query( $user_args );

今私がやりたいことは、投稿のみを持つすべてのユーザーを取得することです。どのように私は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

ユーザーに投稿がない場合は、選択しないでください。

1
Marlon Buendia

これをあなたの引数に追加してください'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

これがいくつかの可能なオプションの下にあります:

コーデックリンク

注文と注文のパラメータpost_countを追加することができます。そうでなければ、 "posts_per_author"のようなパラメータが存在しませんwp_query refrenceに存在しません。

クエリにorderbyを含めてください

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

要件に応じてコードでカウントを使用してください。

著者またはユーザーを取得する

<?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"が役立ちます。

直接の質問でこの記事を見てください:

少なくとも1つの投稿を持つユーザーを取得します

ありがとうございます。

0
jas