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

33 commentaires
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 ? 2 possibilités : la méthode facile via Admin Columns, la méthode plus technique via le code.

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é  ?

Par Aurélien Denis

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

33 commentaires
  1. Laurent

    Bonjour, est-il possible d’ajouter une colonne avec une checkbox ou une couleur ou un truc comme ca.

    Nous avons beaucoup de fiches produits dans Woocommerce qui nécessitent une relecture et nous somme plusieurs à nous en occuper, mais seul moi m’occupe de les mettre en ligne pour différentes raisons.

    Ce que j’aimerai, c’est mettre en place un système permettant de voir si une fiche a fait l’objet d’une relecture afin de savoir lesquelles traiter.

    Une idée de la méthode à employer ?

    1. Aurélien Denis auteur de l’article

      Vous pouvez utiliser les statuts potentiellement.

      Sinon, regardez du côté de Admin Columns Pro qui l’extension par excellence pour la gestion / édition des colonnes en masse.

      1. Laurent

        Merci Denis, nous utilisons déjà l’extension Admin Columns en version gratuite.

        J’avais plutôt pensé à une petite fonction qui colorerait la ligne du produit dans le listing 😉

  2. Jerry

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

  3. 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. Luc Page

        ah ok, super ! merci !

      2. Luc

        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. Luc

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

  4. 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. 😉

  5. NikoWeb

    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. NikoWeb

        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

  6. Akro Web

    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

  7. Robin

    Supeeeeeeer!!!!! Merci!!!!!!!!!!!!!!!!!!!!! Simple et efficace!!!

  8. aicha

    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

  9. pipoulito

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

  10. samsab

    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

  11. quentinsinger

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

  12. Lilhouh

    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 ?

  13. Hybrid59

    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…

  14. 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)

  15. Marian

    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”

  16. 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 🙂

  17. steflp

    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 …

  18. 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. Tristan

      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

Laisser un commentaire