You are using wrong approach
对于你想要实现的目标,你使用了错误的方法。您对这两者使用相同的参数
WP_Query
和
WP_User_Query
(
get_users
最终转化为
WP_User_Query
). 问题是
WP_Query
不支持
orderby
参数
post_count
因为一个职位总是等于一个职位
WP_User_Query
不支持
post_type
因为用户没有为自己分配帖子类型。
This can\'t be achieved using standard functions
在里面
WP_User_Query
它是硬编码的,对于用户帖子计数,它只查找post\\u类型
post
. 要实现您想要实现的目标,您需要编写一个自定义数据库查询。
A custom solution
实现这一点的独立函数可能如下所示(请注意,我还没有对其进行测试,因此可能存在SQL拼写错误或smth)。
function get_users_by_post_count( $post_type = \'post\' ) {
global $wpdb;
$users = $wpdb->get_results(
$wpdb->prepare(
"SELECT {$wpdb->users}.ID, p.post_count
FROM {$wpdb->users}
LEFT JOIN (
SELECT post_author, COUNT(*) AS post_count
FROM {$wpdb->posts} WHERE post_type = %s
GROUP BY post_author
) p ON {$wpdb->users}.id = p.post_author
ORDER BY p.post_count",
$post_type
)
);
return $users;
}
要使用它,只需像这样称呼它:
$users = get_users_by_post_count( \'custom_post_type\' );
if ( ! empty( $users ) ) {
foreach ( $users as $user ) {
// there you have user ID and post_count
echo $user->ID . \' has \' . $user->post_count . \' posts\';
}
}