查询最大发帖数的作者(自定义发帖类型)

时间:2018-01-23 作者:prinz

我需要获得作者信息,谁拥有最多的帖子(自定义帖子类型)。

这是我试图得到结果的代码。

 $author_query = new WP_User_Query(array ( 
                           \'orderby\' => \'post_count\', 
                           \'order\' => \'DESC\', 
                ));

$authors = $author_query->get_results();

foreach ( $authors as $author ) {
    echo $author->ID;
    echo $author->display_name;
}
结果是得到正常帖子的帖子计数。这里我有自定义的帖子类型,而不是默认的帖子。我需要根据自定义帖子类型的帖子数量获取结果。。

3 个回复
最合适的回答,由SO网友:Jomol MJ 整理而成

您可以尝试以下查询,从中可以检索作者数据和帖子数量。

$sql = "SELECT SQL_CALC_FOUND_ROWS wp_users.ID,post_count FROM wp_users RIGHT JOIN (SELECT post_author, COUNT(*) as post_count FROM wp_posts WHERE ( ( post_type = \'custom-post-type\' AND ( post_status = \'publish\'  ) ) ) GROUP BY post_author) p ON (wp_users.ID = p.post_author) WHERE 1=1 ORDER BY post_count DESC";

$result = $wpdb->get_results($sql,OBJECT);
print_r($result); 

SO网友:Philip Downer

由于users表中的post\\u count属性包括用户的帖子总数,并且没有按帖子类型进行任何划分,因此我认为唯一的方法是发出自定义SQL查询。

<?php
//Get 10 most popular authors for post type
$topAuthors = $wpdb->get_results(
"
SELECT post_author
FROM $wpdb->posts WHERE post_type = \'topic\'
GROUP BY post_author
ORDER BY COUNT(*) DESC
LIMIT 0,10
"
, OBJECT_K);
您可以修改SQL查询的order和limit属性,以准确了解您需要的内容。

根据您的条件获得作者ID后,您可以使用include 论点

<?php
$authors = new WP_User_Query(array(
    \'include\' => array_keys($topAuthors)
));
foreach( $authors->get_results() as $author ) {
    echo $author->ID;
    echo $author->user_login;
}

SO网友:brianjohnhanna

实际上有一个documented query parameter 调用has_published_posts 它接受WP_User_Query.

has_published_posts (布尔值/数组)-将帖子类型数组传递给以这些帖子类型发布帖子的用户,以过滤结果。true是所有公共帖子类型的别名。默认值为空。自版本4.3起。

因此,您应该能够运行

$author_query = new WP_User_Query(array( 
    \'orderby\' => \'post_count\', 
    \'order\' => \'DESC\', 
    \'has_published_posts\' => array(\'custom_post_type\')
));

结束