admin管理员组文章数量:1335356
I have been searching high and low for a way to count the amount of results from a get_users query.
Most of what I found is to count the total number of posts in a post query, but nothing for counting the total number of users in the get_users query.
Can someone point it out for me? Thanks a lot.
I have been searching high and low for a way to count the amount of results from a get_users query.
Most of what I found is to count the total number of posts in a post query, but nothing for counting the total number of users in the get_users query.
Can someone point it out for me? Thanks a lot.
Share Improve this question asked Oct 17, 2011 at 21:17 user1893user1893 3591 gold badge9 silver badges22 bronze badges4 Answers
Reset to default 5when you use get_users()
it retrieves an array of users matching the criteria given in $args
which means you can simply use PHP's count()
function e.g:
$users = get_users($args);
$number_of_users = count($users);
Bainternet's answer gives you the number of users for one query and doesn't help if you need multiple pages of users.
If you have thousands of users that's not what you want. You can use WP_User_Query much the same way you use WP_Query for posts. It's very similar to get_users -- same arguments, but different features and usage.
Most importantly you can get the total number of users who match your criteria without actually returning all of the results (and potentially hitting memory limits).
Usage
$user_query = new WP_User_Query(array(
'number' => 15,
'paged' => 1
));
$users = $user_query->get_results(); // array of WP_User objects, like get_users
$total = $user_query->get_total(); // int, total number of users (not just the first page)
Examples:
echo $users[0]->get('display_name');
// "Radley Sustaire"
echo count($users);
// "15" (count from the first page of users)
echo $user_query->get_total();
// "86" (count from all pages of users)
$num_pages = ceil( $user_query->get_total() / 15 );
// "6" (number of pages of users. 15 is the "users per page" from the first example)
// (* do NOT use count($users) in place of 15. try a separate $per_page variable)
Here is how I implemented this:
function getUsers($args = array(), $count = false)
{
// Default behaviour is to return full user information
$method = 'get_results';
// If count is true then change the WP_User_Query method
// and limit the fields SELECT'd to 'ID' to speed up the query
if($count === true) {
$method = 'get_total';
$args['fields'] = 'ID';
}
$userQuery = new WP_User_Query($userArgs);
return call_user_func(array($userQuery, $method));
}
Usage:
$args = array('role' => author,
'meta_key' => 'foo',
'meta_value' => 'bar'
);
// Returns (array) WP_User objects (a la get_users())
$users = getUsers($args);
// Returns (int) number of of users matched by $args
$count = getUsers($args, true);
Aside from being more compact / reusable than $users = get_users($args); $count = count($users);
it ensures that if all you want is the total number then it will fetch the minimum required from the DB to achieve this.
Try the function below to get the count of all users, and user counts based on user roles, in an array:
count_users();
Output comes like this:
Array (
[total_users] => 32
[avail_roles] => Array (
[administrator] => 1
[subscriber] => 28
[sub_administrator] => 1
[editor] => 2
)
)
More information can be found here.
本文标签: usersHow to count getusers query
版权声明:本文标题:users - How to count get_users query? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742369728a2461995.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论