functions - Display only custom post type count for current author on the "At a Glance" dashboard widget

admin2025-06-06  8

I am using this code to display all custom post types along with their count on the "At a Glance" dashboard widget:

add_action( 'dashboard_glance_items', 'cpad_at_glance_content_table_end' );
function cpad_at_glance_content_table_end() {
$args = array(
    'public' => true,
    '_builtin' => false,
);
$output = 'object';
$operator = 'and';

$post_types = get_post_types( $args, $output, $operator );
foreach ( $post_types as $post_type ) {
    $num_posts = wp_count_posts( $post_type->name );
    $num = number_format_i18n( $num_posts->publish );
    $text = _n( $post_type->labels->singular_name, $post_type->labels->name, intval( $num_posts->publish ) );
    if ( current_user_can( 'edit_posts' ) ) {
        $output = '<a href="edit.php?post_type=' . $post_type->name . '">' . $num . ' ' . $text . '</a>';
        echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
        } else {
        $output = '<span>' . $num . ' ' . $text . '</span>';
            echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
        }
    }
}

Is there a way to only display the count of posts belonging to the current logged in author?

I am using this code to display all custom post types along with their count on the "At a Glance" dashboard widget:

add_action( 'dashboard_glance_items', 'cpad_at_glance_content_table_end' );
function cpad_at_glance_content_table_end() {
$args = array(
    'public' => true,
    '_builtin' => false,
);
$output = 'object';
$operator = 'and';

$post_types = get_post_types( $args, $output, $operator );
foreach ( $post_types as $post_type ) {
    $num_posts = wp_count_posts( $post_type->name );
    $num = number_format_i18n( $num_posts->publish );
    $text = _n( $post_type->labels->singular_name, $post_type->labels->name, intval( $num_posts->publish ) );
    if ( current_user_can( 'edit_posts' ) ) {
        $output = '<a href="edit.php?post_type=' . $post_type->name . '">' . $num . ' ' . $text . '</a>';
        echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
        } else {
        $output = '<span>' . $num . ' ' . $text . '</span>';
            echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
        }
    }
}

Is there a way to only display the count of posts belonging to the current logged in author?

Share Improve this question asked Nov 9, 2018 at 19:23 quantum_leapquantum_leap 419 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 2

I think what you're after is:

   // The user is logged, retrieve the user id (this needs to go above your foreach)
    $user_ID = get_current_user_id(); 
   // Now we have got the user's id, we can pass it to the foreach of your function(this needs to go into your foreach:  
    echo '<li>Number of '.$post_type->name.' posts published by me: ' . count_user_posts( $user_ID , $post_type->name ).'</li>';

I have modified the answer from @rudtek and I am displaying the code here. Basically, the count_user_posts function needed the name method passed on the post type, otherwise, the output was '0'.

add_action( 'dashboard_glance_items', 'cpad_at_glance_content_table_end' );
function cpad_at_glance_content_table_end() {
$args = array(
    'public' => true,
    '_builtin' => false,
);
$output = 'object';
$operator = 'and';

$post_types = get_post_types( $args, $output, $operator );
foreach ( $post_types as $post_type ) {
    $user_ID = get_current_user_id();
    $num_posts = count_user_posts( $user_ID , $post_type->name );
    $text = _n( $post_type->labels->singular_name, $post_type->labels->name, intval( $num_posts->publish ) );
    if ( current_user_can( 'edit_posts' ) ) {

        $output = '<a href="edit.php?post_type=' . $post_type->name . '">' . $num_posts . ' ' . $text . '</a>';
        echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
        } else {
        $output = '<span>' . $num_posts . ' ' . $text . '</span>';
            echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
        }
    }
}
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1749188886a317107.html

最新回复(0)