Gets the number of posts a user has written.
Parameters
$userid
intrequired- User ID.
$post_type
array|stringoptional- Single post type or array of post types to count the number of posts for. Default
'post'
.Default:
'post'
$public_only
booloptional- Whether to only return counts for public posts.
Default:
false
Source
function count_user_posts( $userid, $post_type = 'post', $public_only = false ) {
global $wpdb;
$where = get_posts_by_author_sql( $post_type, true, $userid, $public_only );
$count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
/**
* Filters the number of posts a user has written.
*
* @since 2.7.0
* @since 4.1.0 Added `$post_type` argument.
* @since 4.3.1 Added `$public_only` argument.
*
* @param int $count The user's post count.
* @param int $userid User ID.
* @param string|array $post_type Single post type or array of post types to count the number of posts for.
* @param bool $public_only Whether to limit counted posts to public posts.
*/
return apply_filters( 'get_usernumposts', $count, $userid, $post_type, $public_only );
}
Hooks
- apply_filters( ‘get_usernumposts’,
int $count ,int $userid ,string|array $post_type ,bool $public_only ) Filters the number of posts a user has written.
Get post count for a user
Display the number of posts published by the user with an ID of 5.
Get post count for a user filtered by post type
Display the number of posts of post type “book” published by the user with an ID of 5.
Translation friendly post count
The same operation, with translation support.
$public_only = false only means it adds posts with the status private, posts with status trash or custom status won’t count.