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.
I’ve also been poking around with At a Glance lately. You might want to check out http://wordpress.org/plugins/glance-that for extending your dashboards content.
Just used it and it’s really awesome and easy. Let me update the post :)
Nice! Hope you get some good use out of it. Let me know if you encounter any bugs. And, thanks for the mention!
Is it possible to somehow modify the code to only count posts belonging to the current logged in author?