Ajouter des colonnes personnalisées dans le back-office de WordPress

Le back-office de WordPress liste les différents contenus présents sur votre site (article, page, type de contenu personnalisé) à l'aide de colonnes comme le titre, l'auteur, la taxonomie (catégorie, tags), la date et plus. A l'aide des options de l'écran, vous pouvez facilement masquer celles qui vous semblent inutiles mais comment faire pour afficher d'autres données personnalisées ?

Avant-propos

Ce tutoriel est réservé à des utilisateurs avancées et qui ont des connaissance de base en PHP.

En effet, il est nécessaire de connaitre quelques fonctions de récupération de données propres à WordPress (affichage des miniatures ou récupération des valeurs d’un champ personnalisé, etc.).

L’intégralité des codes ci-après sont à insérer dans le fichier functions.php ou dans un plugin de fonctions globales.

Toutefois, c’est en faisant des erreurs que l’on apprend !

Étape n°1 – Création des colonnes personnalisées

Cette première étape consiste à enregistrer les intitulés de colonnes que nous allons ajouter dans l’interface.

Dans cet exemple, nous ajouterons une colonne pour afficher la miniature de l’article.

Je vous recommande la lecture du tutoriel dédié à l’internationalisation de WordPress et de votre thème pour comprendre la traduction des éléments texte.

// Création des colonnnes personnalisées
function wpc_colonne($columns) {
 return array_merge( $columns, 
 array('thumb' => __('Miniature')) );
}
add_filter('manage_posts_columns' , 'wpc_colonne');

Étape n°2 – Affichage des données personnalisées

Il nous à présent indiquer quels sont les contenus que nous allons récupérer pour les envoyer dans les différentes lignes des différentes colonnes.

Dans ce cas pratique, nous allons afficher la miniature associé à l’article – la fameuse Image à la une.

// Affichage des données
add_action('manage_posts_custom_column', 'data_colonne');
function data_colonne($name) {
 global $post;
 switch ($name) {
case 'thumb':
 if(has_post_thumbnail($post->ID))
 {
 ?>
 <a href="<?php the_permalink(); ?>" target="_blank">
 <?php the_post_thumbnail(array(70,70));?>
 </a>
 <?php
 }
 else
 {
 _e('No Thumbnail','twentyeleven');
 }
 break;
 }
 }

Étape n°3 – Vérification du résultat final

Une fois le fichier de fonctions enregistré, retournez dans votre administration WordPress et appréciez le résultat final.

Capture d'écran - Colonne personnalisée sous WordPress
Une colonne pour afficher les images à la une

Vous pouvez bien entendu ajouter d’autres colonnes en récupérant par exemple des valeurs présentes dans des champs personnalisés à l’aide de la fonction get_post_meta notamment.

Notez qu’il est possible de masquer celle-ci via les Options de l’écran, de la même manière que pour les autres d’ailleurs.

Et vous, chers amis fans de WordPress, quelles sont les colonnes que vous avez ajouté  ?

Crédits photo : Albe86

31 commentaires
  1. Julio Potier

    Hello
    J’ai ajouté le nombre de vues de mes articles (avec le plugin Post Views Count bien sur) et j’utilise la même technique, la seule, la vraie
    Merci !

    1. Aurélien Denis auteur de l’article

      Cool j’ai ta bénédiction !

    2. Bonjour, merci pour ce tuto, et pour ces précieux plug ins ! j’ai réussi avec la miniature, mais je galère un peu à intégrer le nombre de vues dans une colonne… Merci d’avance pour votre aide et pour tous vos conseils et autos ! Tristan

  2. Bonjour,
    Bonjour sur un site de vente de machines d’occasion , j’ai utilisé l’id de l’article pour en en faire une référence, du coup j’ai rajouté une colonne dans la liste des articles qui rappelle cette référence (id-marque-date plus exactement pour la référence …)

    Bonne journéee …

  3. www.web-geek.fr

    Salut,

    J’affiche le nombre de vue d’un article aussi, mais ta technique va me permettre d’afficher la miniature et le résultat final est vraiment sympa

  4. Très bon article une fois de plus et surtout de bonnes explications.

    Une petite question pour les custom post type c’est : manage_${post_type}_posts_custom_column par contre pour la partie concernant les taxonomies une fonction native existe ?

    1. Aurélien Denis auteur de l’article

      Bonne question, je n’avais pas pensé aux taxonomies. Cela dit, je ne vois pas quoi tu voudrais afficher ? Sinon, oui tu peux différencier les articles des pages des custom post.

    2. Julio Potier (BoiteAWeb)

      « manage_{$screen->taxonomy}_custom_column »

  5. Aurélien

    J’ai de mon côté personnalisé les sidebares en fonction de mes articles à l’aide du très bon plugin « Custom Sidebars ».
    Comment pourrais-je faire pour afficher dans ma colonne le nom de la sidebar utilisée par l’article ?
    (je coince un peu)

  6. Très bon tuto merci, j’aimerai savoir si il est possible de modifier une valeur d’un champs personnalisé dans ces colonnes ?

    Comme j’ai parfois 50 posts avec la même valeur de champs cela me ferai gagner beaucoup de temps.

    1. Aurélien Denis auteur de l’article

      En passant par une requête SQL dans phpMyAdmin…

  7. Bonjour,

    Merci pour ce petit tuto. Je souhaite personnellement afficher l’URL des pages. J’ai réussi à afficher celles des articles, mais je ne parviens pas à ajouter cette colonne pour les PAGES.
    Pouvez-vous me guider svp ?

  8. quentinsinger

    Bonjour, super tuto merci ! Comment faut-il faire pour le placer dans un autre ordre ? Par exemple mettre la date à la fin ? Merci

  9. Bonjour à tous
    savez vous quel plugin utiliser pour afficher tous les posts avec leur(s) catégories, afin de modifier à la volée les catégories de chaque post.
    car faire cela, un à un, n rentrant dans l’article prend un temps fou.
    A vous lire

  10. pipoulito

    très utile, mais j’aurais besoin d’afficher une colonne attribut (de produit) et là je ne vois pas…

  11. Bonsoir,
    merci pour le tuto mais j’ai besoin de relier deux tables listing et utilisateur de telle façon que pour chaque listing je veux savoir qui l’a déposer Merci

  12. Supeeeeeeer!!!!! Merci!!!!!!!!!!!!!!!!!!!!! Simple et efficace!!!

  13. Super article. Merci
    Petite question :
    Je souhaiterai dans la liste des articles, au niveau de la colonne date rajouter la date et l’heure.
    Car actuellement pour un article publié il est noté « publié il y a 13 heures » et pour un article planifié « 28/04/2016 »
    Je souhaiterai simplement qu’il soit noté « 28/04/2016 à 13 heures »

    Une idée ?

    Mercu

  14. Super tuto ! Merci
    surtout pour quelqu’un qui comme moi ne comprend rien au code
    Du coup je voudrais faire la même mais dans WooCommerce > Commandes et y ajouter l’ID des clients
    Pouvez-vous m’aider svp ?
    Cordialement

    1. Aurélien Denis auteur de l’article

      Je recommande Admin Columns Pro pour faire cela en toute simplicité.

      1. Merci pour votre réponse
        Effectivement j’avais vu cette extension, mais la propriétaire de la boutique ne veut pas acheter cette extension, estimant que c’est trop cher pour afficher juste un truc. mes explications sur toutes les possibilités de ce plugin n’ont rien changé.
        Je vais voir si c’est faisable avec la version gratuite…
        Cordialement

  15. WhiteRoro

    Excellent tutoriel . Cela fonctionne très bien dans le back office du site. J’aimerais d’ailleurs afficher sur le front une page avec toutes les miniatures avec sur chaque vignette un lien vers chaque article. Cela est-il facile à mettre en place sur le même principe ? Quelle est la marche à suivre ?

    1. Aurélien Denis auteur de l’article

      Cette demande est hors sujet… et WordPress gère cela nativement. Il suffit de définir la page des articles dans Réglages > Lecture et d’ajouter la page dans le menu de navigation.

  16. Luc Page

    Bonjour, merci pour le partage. Je cherche en plus de la création des colonnes à pouvoir trier les résultats comme il est possible de le faire nativement avec les dates des articles (exemple). tu as un conseil ou une astuce pour ceci ?

    merci

    1. Aurélien Denis auteur de l’article

      Je recommande vivement de passer par l’extension Admin Columns pour cela.

      1. très bien ce plugin, par contre bon nombre des colonnes crées n’ont pas l’option que je recherchais, à savoir le tri des données… Sauf erreur de ma part, ça n’est pas en option.

        1. en fait, c’est la version pro qui le permet ;), cool !

  17. Merci pour ce meilleur tuto, ce m’aide beacoup :), Bon continuation Denis!

Les commentaires sont fermés.