Add custom post types stats to a custom dashboard widget

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:

Read More

enter image description here

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='edit.php?post_type=widget'>$num</a>";
    $text = "<a href='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' );

}

Related posts

Leave a Reply

2 comments

  1. 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='edit.php?post_type=$post_type->name'>$num</a>";
                $text = "<a href='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>';
    }
    
  2. I think this will work.

    // 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', 'widget name', 'custom_dashboard_movie_list');
    
    }
    
    function custom_dashboard_movie_list(){
    
    // here is the code to add custom post types + count see below
    
    }
    

    The code to add custom post types + count has already been answered and it would clutter this. It can be found here,

    Adding Custom Post Type Counts to the Dashboard
    Best Collection of Code for your functions.php file