count_user_posts( int $userid, array|string $post_type = 'post', bool $public_only = false )
Number of posts user has written.
Parameters
- $userid
-  (int) (Required) User ID. 
- $post_type
-  (array|string) (Optional) Single post type or array of post types to count the number of posts for. Default value: 'post' 
- $public_only
-  (bool) (Optional) Whether to only return counts for public posts. Default value: false 
Return
(string) Number of posts the user has written in this post type.
Source
File: wp-includes/user.php
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 );
}  Changelog
| Version | Description | 
|---|---|
| 4.3.0 | Added $public_onlyargument. Added the ability to pass an array of post types to$post_type. | 
| 4.1.0 | Added $post_typeargument. | 
| 3.0.0 | Introduced. | 
    © 2003–2021 WordPress Foundation
Licensed under the GNU GPLv2+ License.
    https://developer.wordpress.org/reference/functions/count_user_posts