Skip to content

How To Add Custom Post Types To At A Glance Dashboard Widget In WordPress

You can do so many cool things in WordPress with Custom Post Types. So, here’s a trick to add Custom Post Types to At A Glance dashboard Widget in WordPress.

Display A Specific Custom Post Type

bbPress forum, Gravity Forms, and all other things are custom post types, so if you want to display just a specific custom post type in At A Glance dashboard widget, then add following snippet to your current theme’s functions.php file:

add_filter( 'dashboard_glance_items', 'custom_glance_items', 10, 1 );
function custom_glance_items( $items = array() ) {
    $post_types = array( 'snippet' );
    foreach( $post_types as $type ) {
        if( ! post_type_exists( $type ) ) continue;
        $num_posts = wp_count_posts( $type );
        if( $num_posts ) {
            $published = intval( $num_posts->publish );
            $post_type = get_post_type_object( $type );
            $text = _n( '%s ' . $post_type->labels->singular_name, '%s ' . $post_type->labels->name, $published, 'your_textdomain' );
            $text = sprintf( $text, number_format_i18n( $published ) );
            if ( current_user_can( $post_type->cap->edit_posts ) ) {
            $output = '<a href="edit.php?post_type=' . $post_type->name . '">' . $text . '</a>';
                echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
            } else {
            $output = '<span>' . $text . '</span>';
                echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
            }
        }
    }
    return $items;
}

Just replace snippet in above code with your custom post type.

Display All Custom Post Type

If you want to show every custom post type (except menus, media & all) then you can add following snippet to your current theme’s functions.php file:

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>';
            }
    }
}

Joshua Vandercar created an easy to use plugin to do this task without touching any line of code. You can install and use the plugin by searching Glance That on your WordPress plugin page.

4 thoughts on “How To Add Custom Post Types To At A Glance Dashboard Widget In WordPress”

Leave a Reply

Your email address will not be published. Required fields are marked *