The get_usernumposts WordPress PHP filter allows you to modify the number of posts a user has written.
Usage
add_filter('get_usernumposts', 'your_custom_function', 10, 4); function your_custom_function($count, $userid, $post_type, $public_only) { // your custom code here return $count; }
Parameters
$count
(int) – The user’s post count.$userid
(int) – User ID.$post_type
(string|array) – Single post type or array of post types to count the number of posts for.$public_only
(bool) – Whether to limit counted posts to public posts.
More information
See WordPress Developer Resources: get_usernumposts
Examples
Exclude specific post types
Exclude ‘attachment’ and ‘revision’ post types from the user’s post count.
function exclude_post_types_from_count($count, $userid, $post_type, $public_only) { $excluded_post_types = array('attachment', 'revision'); $user_posts = get_posts(array( 'author' => $userid, 'post_type' => $post_type, 'post_status' => 'any', 'numberposts' => -1, 'exclude' => $excluded_post_types )); return count($user_posts); } add_filter('get_usernumposts', 'exclude_post_types_from_count', 10, 4);
Count only published posts
Count only published posts for a user.
function count_published_posts_only($count, $userid, $post_type, $public_only) { $user_posts = get_posts(array( 'author' => $userid, 'post_type' => $post_type, 'post_status' => 'publish', 'numberposts' => -1 )); return count($user_posts); } add_filter('get_usernumposts', 'count_published_posts_only', 10, 4);
Increase post count by a fixed number
Increase the user’s post count by 10.
function increase_post_count($count, $userid, $post_type, $public_only) { $count += 10; return $count; } add_filter('get_usernumposts', 'increase_post_count', 10, 4);
Count posts for a specific post type
Count only ‘product’ post type for a user.
function count_product_post_type($count, $userid, $post_type, $public_only) { $user_posts = get_posts(array( 'author' => $userid, 'post_type' => 'product', 'post_status' => 'any', 'numberposts' => -1 )); return count($user_posts); } add_filter('get_usernumposts', 'count_product_post_type', 10, 4);
Count posts in a specific category
Count user’s posts in a specific category (e.g., category ID 5).
function count_posts_in_category($count, $userid, $post_type, $public_only) { $user_posts = get_posts(array( 'author' => $userid, 'post_type' => $post_type, 'post_status' => 'any', 'numberposts' => -1, 'category' => 5 ) ); return count($user_posts); } add_filter('get_usernumposts', 'count_posts_in_category', 10, 4);
‘post_status’ => ‘any’,
‘numberposts’ => -1,
‘category’ => 5
));
return count($user_posts);
}
add_filter(‘get_usernumposts’, ‘count_posts_in_category’, 10, 4);
Double the user’s post count
Double the user’s post count.
function double_post_count($count, $userid, $post_type, $public_only) { $count *= 2; return $count; } add_filter('get_usernumposts', 'double_post_count', 10, 4);
Count only posts with a specific meta key
Count user’s posts that have the meta key ‘featured’.
function count_posts_with_meta_key($count, $userid, $post_type, $public_only) { $user_posts = get_posts(array( 'author' => $userid, 'post_type' => $post_type, 'post_status' => 'any', 'numberposts' => -1, 'meta_key' => 'featured' )); return count($user_posts); } add_filter('get_usernumposts', 'count_posts_with_meta_key', 10, 4);