The count_many_users_posts() WordPress PHP function retrieves the number of posts made by a set of users.
Usage
Suppose we have a list of user IDs and we want to find out how many posts each user has made. We can use the count_many_users_posts() function to achieve this.
$users = array( 1, 3, 9, 10 ); $counts = count_many_users_posts( $users ); echo 'Posts made by user 3: ' . $counts[3];
This will output: Posts made by user 3: 143 (assuming user 3 has written 143 posts).
Parameters
- $users (array): Required. An array of user IDs.
- $post_type (string|array): Optional. A single post type or array of post types to check. Defaults to ‘post’.
- $public_only (bool): Optional. If set to true, the function will only return counts for public posts. Defaults to false.
More information
See WordPress Developer Resources: count_many_users_posts()
This function was implemented in WordPress version 3.0.0.
Examples
Count Posts for Multiple Users
Find out how many posts users 1, 2 and 3 have made.
$users = array( 1, 2, 3 );
$counts = count_many_users_posts( $users );
foreach ($users as $user) {
echo 'Posts made by user '.$user.': ' . $counts[$user].'<br>';
}
Count Custom Post Types
Find out how many custom posts (let’s say ‘products’) users 1, 2, and 3 have created.
$users = array( 1, 2, 3 );
$counts = count_many_users_posts( $users, 'product');
foreach ($users as $user) {
echo 'Products created by user '.$user.': ' . $counts[$user].'<br>';
}
Count Multiple Post Types
Find out how many ‘post’ and ‘page’ type contents users 1, 2, and 3 have made.
$users = array( 1, 2, 3 );
$post_types = array('post', 'page');
$counts = count_many_users_posts( $users, $post_types );
foreach ($users as $user) {
echo 'Posts and pages created by user '.$user.': ' . $counts[$user].'<br>';
}
Count Public Posts Only
Find out how many public posts users 1, 2, and 3 have made.
$users = array( 1, 2, 3 );
$counts = count_many_users_posts( $users, 'post', true);
foreach ($users as $user) {
echo 'Public posts made by user '.$user.': ' . $counts[$user].'<br>';
}
Count Posts for a Single User
Find out how many posts user 1 has made.
$counts = count_many_users_posts( array(1) ); echo 'Posts made by user 1: ' . $counts[1];