2

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:

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

}
2
  • dashboard "meta box" is called a dashboard widget
    – Bainternet
    May 18, 2011 at 22:06
  • I've added an answer.
    – Bainternet
    May 19, 2011 at 6:08

2 Answers 2

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>';
}
1
  • that did the trick. Now styling it would be even better. : ) Thanks!
    – Marco
    May 19, 2011 at 16:35
0

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

6
  • whats global $wp_meta_boxes; for?
    – Bainternet
    May 18, 2011 at 22:06
  • @Wyck I tried that combo and it didn't work for me.
    – Marco
    May 18, 2011 at 22:17
  • @Bainternet got it: dashboard widget.
    – Marco
    May 18, 2011 at 22:20
  • just tried it and it works fine you just need to echo out the stats from within custom_dashboard_movie_list function
    – Bainternet
    May 18, 2011 at 22:28
  • 1
    woops ya I will remove global
    – Wyck
    May 18, 2011 at 23:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.