02
nov.

Il peut être sympas voire même très  intéressant de pouvoir consulter en un clien d'oeil le nombre d'entité de nos custom post type dans le dashboard de wordpress. En effet nativement le dashboard ne remonte que les éléments suivants :

  • Articles
  • Pages
  • Catégories
  • Mots clés

Une simple fonction php et un appel à une action spécifique vont nous permettre de faire cela en... 20 secondes montre en main si vous maitriser le copier coller :) Voici le code à intégrer dans votre fichier functions.php de votre thème :

// Add all custom post types to the "Right Now" box on the Dashboard
add_action( 'right_now_content_table_end' , 'ucc_right_now_content_table_end' );
 
function ucc_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' ) ) {
        $num = "$num";
        $text = "$text";
    }
    echo ' ' . $num . ''; echo '' . $text . ' ';
    }
}

Cet article est une reprise d'un article anglais que vous pouvez consulter ici. J'ai jugé utile de le traduire simplement car j'utilise souvent ce hook pour afficher mes Custom Post Type. J'édite cet article car avec la version de Wordpress 3.3.1, la syntaxe a légèrement changée :

function ucc_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' ) ) {
            $num = "$num";
            $text = "$text";
        }
        echo '' . $num . '';
        echo '' . $text . '';
    }
}