Ajouter les compteurs de contenu dans le tableau de bord de WordPress

8 commentaires
Ajouter les compteurs de contenu dans le tableau de bord de WordPress
Le widget "D'un coup d'oeil" sous WordPress 3.8 liste et comptabilise l'ensemble des contenus présents dans votre back-office.

Par défaut, il n’intègre que les pages et les articles. Il est pourtant simple d’y rajouter les types de contenu et les taxonomies personnalisés.

Pour vous donner une idée du résultat, voici une capture d’écran avec la vue par défaut :

Widget "D'un coup d'oeil" par défaut sous WordPress

Et une second avec les différents contenus propres au projet :

wordpress-coup-oeil-dashboard-2

Le bout de code PHP a copier / coller dans votre plugin de fonctions globales ou dans votre thème est le suivant :

/* Widget 'Coup d'oeil' avec tous les contenus */
function ntp_right_now_content_table_end() {
$args = array(
'public' => true ,
'_builtin' => false
);
$output = 'objects';
$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->name, $post_type->labels->name , intval($num_posts->publish));
if (current_user_can('edit_posts')) {
$cpt_name = $post_type->name;
}
echo '<li><tr><a class="'.$cpt_name.'" href="edit.php?post_type='.$cpt_name.'"><td></td>' . $num . ' <td>' . $text . '</td></a></tr></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->name, $taxonomy->labels->name , intval($num_terms));
if (current_user_can('manage_categories')) {
$cpt_tax = $taxonomy->name;
}
echo '<li><tr><a class="'.$cpt_tax.'" href="edit-tags.php?taxonomy='.$cpt_tax.'"><td></td>' . $num . ' <td>' . $text . '</td></a></tr></li>';
}
}
add_action('dashboard_glance_items', 'ntp_right_now_content_table_end');

Greg de Screenfeed nous donne un bout de code alternatif tout aussi fonctionnel avec en supplément le moyen de personnaliser l’icône du contenu – en lieu et place du rond par défaut. J’en ai d’ailleurs profité pour adapter les lignes de code ci-dessus pour rajouter la classe des custom post types et des custom taxonomies. Merci à lui !

Bien entendu, une telle astuce repose entièrement sur l’utilisation des dashicons… vous savez la nouvelle police d’icône vectorisée pour WordPress.

Par Aurélien Denis

Consultant & Développeur WordPress / WooCommerce. Un site à créer, à maintenir ou à débuguer ? Contactez-moi.

8 commentaires
  1. abdellah

    astuce considérable merci

  2. Mike

    Bonjour, je tombe sur vos articles comme souvent par le tableau de bord de mon installation WordPress, beaucoup de gens doivent faire de même. Le contenu est souvent intéressant mais la méthode ou plutôt l’absence de méthode consistant à balancer une fonction dans functions.php plus un appel qui n’est pas isolé dans un des temps d’initialisation de wordpress ce n’est quand même pas une bonne pratique. Pourquoi ne pas formuler sous la forme d’un plugin, réutilisable, qui encapsule le code dans sa propre entité ou à la limite proposer une bibliothèque de fonctions téléchargeables ?
    Encourager les gens à “hacker” vite fait le functions.php est une mauvaise idée pour toute chose qui n’est pas lié au graphisme : vous changez de thème vous perdez la fonctionnalité, vous faites un nouveau site, vous allez perdre du temps à copier des bouts de code de votre ancien functions.php.
    Vous bénéficiez d’une visibilité énorme dans de la communauté française, bien sûr rien ne vous y oblige mais c’est dommage de ne pas en profiter pour encourager les bonnes pratiques qui bénéficient à tous, même si je vous l’accorde, les articles deviennent plus longs à écrire.
    Cordialement,

    Mike

    1. Aurélien Denis auteur de l’article

      Bonjour Mike, je te remercie de ta remarque pertinente.

      Comme tu as pu le lire dans ce tutoriel, je préconise la méthode de création d’un mu-plugin parfaitement adapté pour ce type de situation.

      Seulement voila, beaucoup de gens rencontre des difficultés pour saisir la portée de tout cela. Bien souvent, la modification du fichier functions.php est la solution la plus simple pour le plus grand nombre. La plupart du temps je précise également qu’il vaut mieux créer un mu-plugin et passer par un client FTP.

      Il va de soi que les astuces présentées sont parfois techniques – comme celle-ci, et plutôt réservées à des utilisateurs avancés.

      Les développeurs quand à eux disposent généralement déjà d’une méthode qui leur est propre pour intégrer le code et ne soucie que… du code justement. 🙂

      Et oui, j’ai conscience de la responsabilité qui m’incombe de partager de bonnes pratiques… ce que je m’efforce de faire au quotidien aussi bien dans mes articles, que par les nombreuses réponses aux commentaires et autres mails. 😉

  3. Julien Maury (@TweetPressFr)

    Sympa, c’est peut-être mieux de différencier CPTs de taxonomies mais ça peut servir ^^

    1. Aurélien Denis auteur de l’article

      Salut Julien, que veux-tu dire par différencier (je ne suis pas sûr d’avoir compris ton propos) ? 🙂

      1. Julien Maury (@TweetPressFr)

        Y a une erreur le param $output c’est “objects’ avec un ‘s’ pas’ object. Ensuite les argument de get_post_type() peuvent différer de ceux de get_taxonomies()

        1. Aurélien Denis auteur de l’article

          Corrigé ! Bien que le code reste fonctionnelle dans les 2 cas…

          1. Julien Maury

            bah oui il prend le param par défaut du coup mais ça peut poser problème si on veut prendre ton code et le remanier ^^

Laisser un commentaire