i see code in link how to showing User's Post Counts by Custom Post Type in the Admin's User List, but i want show posts count in author.php

Showing User's Post Counts by Custom Post Type in the Admin's User List?

is show in users.php like image:

enter image description here

But i want show posts count like image in author.php, please help me, thanks.

2 Answers 2


Here I've modified the code from URL you've given.

function _yoursite_get_author_post_type_counts() {
    static $counts;
    if (!isset($counts)) {
        global $wpdb;
        global $wp_post_types;
        $sql = <<<SQL
        COUNT(*) AS post_count
        WHERE 1=1
        AND post_type NOT IN ('revision','nav_menu_item')
        AND post_status IN ('publish','pending', 'draft')
        GROUP BY
        $posts = $wpdb->get_results($sql);
        foreach($posts as $post) {
            $post_type_object = $wp_post_types[$post_type = $post->post_type];
            if (!empty($post_type_object->label))
                $label = $post_type_object->label;
            else if (!empty($post_type_object->labels->name))
                $label = $post_type_object->labels->name;
                $label = ucfirst(str_replace(array('-','_'),' ',$post_type));
            if (!isset($counts[$post_author = $post->post_author]))
                $counts[$post_author] = array();
            $counts[$post_author][] = array(
                'label' => $label,
                'count' => $post->post_count,
                'type' => $post->post_type,
    return $counts;
$user_id = get_current_user_id();
$counts = _yoursite_get_author_post_type_counts();
$custom_column = array();
if (isset($counts[$user_id]) && is_array($counts[$user_id]))
    foreach($counts[$user_id] as $count) {
        // $link = admin_url() . "edit.php?post_type=" . $count['type']. "&author=".$user_id;
        // admin_url() . "edit.php?author=" . $user->ID;
        // $custom_column[] = "\t<tr><th><a href={$link}>{$count['label']}</a></th><td>{$count['count']}</td></tr>";
        echo $count['label']. "  ".$count['count']."<br />"; 

I've not tested but it's based on the code from given URL. I've just echoed it to verify if the correct data is being displayed. Further you can do what's you required for you actual requirement.

  • thanks a lot, It's working <3
    – Duy Hữu
    Oct 15, 2019 at 12:46

You can use the following code to get the post count published by a user in the author.php file

$author_id = get_queried_object_id();

$getAuthorPosts = new WP_Query(
        "post_type"      => "post", // Replace "post" with your custom post type. e.g. "book" OR "WHATEVER"
        "author"         => $author_id,

echo $getAuthorPosts->found_posts; // Number of posts published by the author.
  • thanks, but i want show post count of all cpt by author (like image), your code just show post count by one cpt T_T
    – Duy Hữu
    Oct 15, 2019 at 12:48
  • @DuyHữu I am pretty sure if you remove the "post_type" => "post", argument, it will do what you want.
    – Anteraez
    Oct 15, 2019 at 20:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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