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.

The dashboard conveniently tells me how many posts, pages, and comments I have. I would like it to tell me how many articles, videos and cartoons I have too (three custom post types registered with my theme). How would I go about including these into the "Right Now" panel on the dashboard?

alt text

share|improve this question
add comment

4 Answers

up vote 9 down vote accepted

Yes, there are several actions within that widget, including right_now_content_table_end. Example:

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 answer
    
Also covered in the best collection Wiki: wordpress.stackexchange.com/questions/1567/… –  t31os Dec 14 '10 at 12:32
add comment

add_action( 'dashboard_glance_items', 'cor_right_now_content_table_end' );

function cor_right_now_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 . '&nbsp;' . $text . '</a>';
    }
    echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
}
$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' ) ) {
        $output = '<a href="edit-tags.php?taxonomy=' . $taxonomy->name . '">' . $num . '&nbsp;' . $text . '</a>';
    }
    echo '<li class="taxonomy-count ' . $taxonomy->name . '-count">' . $output . '</li>';
}

}

// Add Some CSS to "At a Glance" Widget

function custom_colors() {

echo '<style type="text/css">
    .slides-count a:before {content:"\f233"!important}
    .gallery-count a:before {content:"\f163"!important}
    </style>';

}

add_action('admin_head', 'custom_colors');

share|improve this answer
    
Try this code it's working very well dear –  Chirag Pipariya Dec 23 '13 at 6:18
add comment

For anyone interested in changing the "Discussion" section to show the pending post count instead of having it all in "content" the right_now_discussion_table_end hook can be used like so:

add_action( 'right_now_discussion_table_end', 'my_add_counts_to_rightnow_discussion' );
function my_add_counts_to_rightnow_discussion() {
    // Custom post types counts
    $post_types = get_post_types( array( '_builtin' => false, 'public' => true , 'show_ui' => true), 'objects' );
    foreach ( $post_types as $post_type ) {
            if ( current_user_can( 'edit_posts' ) ) {

        $num_posts = wp_count_posts( $post_type->name );
         $text = _n( $post_type->labels->singular_name, $post_type->labels->name, $num_posts->publish );

           $num = number_format_i18n( $num_posts->pending );
            $post_types = get_post_types( array( '_builtin' => false, 'public' => true , 'show_ui' => true), 'objects' );

            $num = '<a href="edit.php?post_status=pending&post_type=' . $post_type->name . '">' . $num . '</a>';
                $text = '<a class="waiting" href="edit.php?post_status=pending&post_type=' . $post_type->name . '">' . $text . ' Pending </a>';

            echo '<td class="first b b-' . $post_type->name . 's">' . $num . '</td>';
            echo '<td class="t ' . $post_type->name . 's">' . $text . '</td>';
            echo '</tr>';
        }
    }
}

I also removed the if(pending >0) this way the post types will line up with the count on the left. If you use this code just use Sébastien or Adam's code for the counts and remove the pending section.

Also note, I added a check to see if the post types were public and set to show in the UI. This can be added to either of the other's code.

share|improve this answer
add comment

Based on this same code, you may use this to show every custom post types and custom taxonomies count :

// Add custom taxonomies and custom post types counts to dashboard
add_action( 'right_now_content_table_end', 'my_add_counts_to_dashboard' );
function my_add_counts_to_dashboard() {
    // Custom taxonomies counts
    $taxonomies = get_taxonomies( array( '_builtin' => false ), 'objects' );
    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, $num_terms );
        $associated_post_type = $taxonomy->object_type;
        if ( current_user_can( 'manage_categories' ) ) {
            $num = '<a href="edit-tags.php?taxonomy=' . $taxonomy->name . '&post_type=' . $associated_post_type[0] . '">' . $num . '</a>';
            $text = '<a href="edit-tags.php?taxonomy=' . $taxonomy->name . '&post_type=' . $associated_post_type[0] . '">' . $text . '</a>';
        }
        echo '<td class="first b b-' . $taxonomy->name . 's">' . $num . '</td>';
        echo '<td class="t ' . $taxonomy->name . 's">' . $text . '</td>';
        echo '</tr><tr>';
    }

    // Custom post types counts
    $post_types = get_post_types( array( '_builtin' => false ), 'objects' );
    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, $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 '<td class="first b b-' . $post_type->name . 's">' . $num . '</td>';
        echo '<td class="t ' . $post_type->name . 's">' . $text . '</td>';
        echo '</tr>';

        if ( $num_posts->pending > 0 ) {
            $num = number_format_i18n( $num_posts->pending );
            $text = _n( $post_type->labels->singular_name . ' pending', $post_type->labels->name . ' pending', $num_posts->pending );
            if ( current_user_can( 'edit_posts' ) ) {
                $num = '<a href="edit.php?post_status=pending&post_type=' . $post_type->name . '">' . $num . '</a>';
                $text = '<a href="edit.php?post_status=pending&post_type=' . $post_type->name . '">' . $text . '</a>';
            }
            echo '<td class="first b b-' . $post_type->name . 's">' . $num . '</td>';
            echo '<td class="t ' . $post_type->name . 's">' . $text . '</td>';
            echo '</tr>';
        }
    }
}
share|improve this answer
add 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.