Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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

}
share|improve this question
    
dashboard "meta box" is called a dashboard widget –  Bainternet May 18 '11 at 22:06
    
I've added an answer. –  Bainternet May 19 '11 at 6:08
add comment

2 Answers

up vote 1 down vote accepted

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>';
}
share|improve this answer
    
that did the trick. Now styling it would be even better. : ) Thanks! –  Marco May 19 '11 at 16:35
add comment

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

share|improve this answer
    
whats global $wp_meta_boxes; for? –  Bainternet May 18 '11 at 22:06
    
@Wyck I tried that combo and it didn't work for me. –  Marco May 18 '11 at 22:17
    
@Bainternet got it: dashboard widget. –  Marco May 18 '11 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 '11 at 22:28
1  
woops ya I will remove global –  Wyck May 18 '11 at 23:52
show 1 more comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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