0

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.

1

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
        SELECT
        post_type,
        post_author,
        COUNT(*) AS post_count
        FROM
        {$wpdb->posts}
        WHERE 1=1
        AND post_type NOT IN ('revision','nav_menu_item')
        AND post_status IN ('publish','pending', 'draft')
        GROUP BY
        post_type,
        post_author
SQL;
        $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;
            else
                $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 at 12:46
0

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(
    array(
        "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 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 at 20:02

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.