I am trying to use the total posts count currently i am using the this query

'author' => $userID,
'post_type' => 'post',
'post_status' => $poststatus,
'posts_per_page' => 212
<?php echo count_user_posts($args); ?>

$poststatus have 2 options draft and publish. But when i run this query one condition work good and that is publish. but when i try to run draft it not showing correct count of draft posts. So tell me where i am wrong in the query.


The function count_user_posts only accepts a user ID so you arguments are never taken in consideration. Here is a simple function to get the count by status

function count_user_posts_by_status($post_status = 'publish',$user_id = 0){
    global $wpdb;
    $count = $wpdb->get_var(
        SELECT COUNT(ID) FROM $wpdb->posts 
        WHERE post_status = %s 
        AND post_author = %d",
    return ($count) ? $count : 0;


<?php echo count_user_posts_by_status('draft',$userID); ?>
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.