Sometimes you will need to get the number of posts that a user has created.
This can also apply to Custom Post Types.

Checking WordPress' codex we can see count_user_posts which counts exactly what it
promises but doesn't do anything for custom post types.
Fortunately, somebody has added a function that can be used in the meantime.

[code]
function count_user_posts_by_type( $user_id, $post_type = 'post' ) {
global $wpdb;

$where = get_posts_by_author_sql( $post_type, true, $user_id );
$count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );

return apply_filters( 'get_usernumposts', $count, $user_id );
}
[/code]

Here is another way

[code]
/**
*
* Usage: count_user_posts_by_type_alt(0, 'movie');
*
* @global obj $wpdb
* @param int $user_id 0 will get the currently logged in user's ID.
* @param string $post_type
* @return int
* @author Slavi Marinvo | http://orbisius.com
*/
function count_user_posts_by_type_alt( $user_id = 0, $post_type = 'post' ) {
global $wpdb;

$user_id = $user_id ? $user_id : get_current_user_id();
$count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE
post_type = %s AND post_author = %d ", $post_type, $user_id ) );

return apply_filters( 'get_user_num_posts', $count, $user_id );
}

[/code]

Disclaimer: The content in this post is for educational purposes only. Always remember to take a backup before doing any of the suggested steps just to be on the safe side.
Referral Note: When you purchase through a referral link (if any) on this page, we may earn a commission.
If you're feeling thankful, you can buy me a coffee or a beer