WordPress : comment afficher les articles personnalisés sur le tableau de bord

Publié le 03 mars 2011 par Acs04

Suite à un article paru sur le site geekeries, qui explique comment afficher les articles personnalisés (custom post types) sur le tableau de bord de WordPress, j’ai légèrement adapté le code proposé pour le rendre factorisable.

J’en ai profité pour corriger une petite erreur dans le code proposé initialement.

Voici donc le résultat :

/* Début personnalisation */
add_action('right_now_content_table_end', 'listreferences');
add_action('right_now_content_table_end', 'listpartenaires');

function listreferences(){
// premier paramètre : slug du custom post type
// second paramètre : le libellé au pluriel
// troisième paramètre : le libellé au singulier
dspThisCustom('references', 'Références', 'Référence');
}

function listpartenaires(){
dspThisCustom('partenaires', 'Partenaires', 'Partenaire');
}
/* Fin personnalisation */

/*
* paramètres de la fonction : $type=custom post type; $pluriel=Libellé pluriel, $singulier=Libellé singulier
*/
function dspThisCustom($type,$pluriel,$singulier) {
 $types = $type;

 if (!post_type_exists(''.$types.'')) {
 return;
 }

 $num_posts = wp_count_posts( ''.$types.'' );

 $nbr_ = $singulier;
 $nbr_s = $pluriel;

 $num = number_format_i18n( $num_posts->publish );
 $text = _n('' . $nbr_ . '', '' . $nbr_s . '', intval($num_posts->publish) );
 if ( current_user_can( 'edit_posts' ) ) {
 $num = "<a href='edit.php?post_type=$types'>$num</a>";
 $text = "<a href='edit.php?post_type=$types'>$text</a>";
 }
 echo '<tr>';
 echo '<td>' . $num . '</td>';
 echo '<td>' . $text . '</td>';

 echo '';

 if ($num_posts->pending > 0) {
 $num = number_format_i18n( $num_posts->pending );
 $text = _n( 'En attente', 'En attentes', intval($num_posts->pending) );
 if ( current_user_can( 'edit_posts' ) ) {
 $num = "<a href='edit.php?post_status=pending&post_type=$types'>$num</a>";
 $text = '<a href="edit.php?post_status=pending&post_type='.$types.'">"'.$text.'</a>';
 }
 echo '<td>' . $num . '</td>';
 echo '<td>' . $text . '</td>';

 echo '';
 }
 echo '</tr>';
}

Il vous suffit ensuite d’ajouter le code ci-dessus dans le fichier functions.php de votre thème et de modifier la partie comprise entre « /* Début personnalisation*/ » et « /* Fin personnalisation */ » en fonction de vos besoins