I have a lot of custom post types and I have them showing in my “Right Now” Dashboard but it’s gotten pretty long so I want to separate them to a custom widget within the dash.
See example below:

So my question is how do I add the CPTs to a custom dashboard widget?
Any help would be awesome.
Thanks!
EDIT: This is what I have (What am I missing?)
// wp_dashboard_setup is the action hook
add_action('wp_dashboard_setup', 'mycustom_moviestats');
// add dashboard widget
function mycustom_moviestats() {
wp_add_dashboard_widget('custom_movie_widget', 'Movie Stats', 'custom_dashboard_movie_list');
}
function custom_dashboard_movie_list(){
// here is the code to add custom post types + count see below
function my_right_now() {
$num_widgets = wp_count_posts( 'widget' );
$num = number_format_i18n( $num_widgets->publish );
$text = _n( 'Widget', 'Widgets', $num_widgets->publish );
if ( current_user_can( 'edit_pages' ) ) {
$num = "<a href="https://wordpress.stackexchange.com/questions/17625/edit.php?post_type=widget">$num</a>";
$text = "<a href="https://wordpress.stackexchange.com/questions/17625/edit.php?post_type=widget">$text</a>";
}
echo '<tr>';
echo '<td class="first b b_pages">' . $num . '</td>';
echo '<td class="t pages">' . $text . '</td>';
echo '</tr>';
}
add_action( 'right_now_content_table_end', 'my_right_now' );
}
Lokks like you have a function declared inside another function, your code is wrong, try this:
// wp_dashboard_setup is the action hook
add_action('wp_dashboard_setup', 'mycustom_moviestats');
// add dashboard widget
function mycustom_moviestats() {
wp_add_dashboard_widget('custom_movie_widget', 'Movie Stats','custom_dashboard_movie_list');
}
function custom_dashboard_movie_list(){
$args = array(
'public' => true ,
'_builtin' => false );
$output="object";
$operator="and";
echo '<table>';
//loop over all custom post types
$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' ) ) {
$num = "<a href="https://wordpress.stackexchange.com/questions/17625/edit.php?post_type=$post_type->name">$num</a>";
$text = "<a href="https://wordpress.stackexchange.com/questions/17625/edit.php?post_type=$post_type->name">$text</a>";
}
echo '<tr><td class="first b b-' . $post_type->name . '">' . $num . '</td>';
echo '<td class="t ' . $post_type->name . '">' . $text . '</td></tr>';
}
//loop over all taxonomies
$taxonomies = get_taxonomies( $args , $output , $operator );
foreach( $taxonomies as $taxonomy ) {
$num_terms = wp_count_terms( $taxonomy->name );
$num = number_format_i18n( $num_terms );
$text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms ));
if ( current_user_can( 'manage_categories' ) ) {
$num = "<a href="edit-tags.php?taxonomy=$taxonomy->name">$num</a>";
$text = "<a href="edit-tags.php?taxonomy=$taxonomy->name">$text</a>";
}
echo '<tr><td class="first b b-' . $taxonomy->name . '">' . $num . '</td>';
echo '<td class="t ' . $taxonomy->name . '">' . $text . '</td></tr>';
}
echo '</table>';
}