vendredi 25 septembre 2026

À propos

Contact

Lexique · Administration & contenus

Colonne personnalisée

En anglais : « Custom admin column »

Colonne ajoutée par un développeur au tableau listant les contenus dans l'administration, pour afficher une métadonnée ou une information calculée.

Par défaut, la liste des articles affiche titre, auteur, catégories, dates. Mais dès qu’un site gère des métadonnées métier (prix, statut d’un dossier, niveau de priorité), il devient vite indispensable de les rendre visibles sans ouvrir chaque fiche une à une.

Les deux hooks à connaître

Pour un type de contenu donné, on filtre d’abord la liste des en-têtes avec manage_{post_type}_posts_columns, qui reçoit un tableau associatif slug => libellé à compléter. Ensuite, l’action manage_{post_type}_posts_custom_column reçoit le nom de la colonne et l’identifiant de la ligne, à charge pour vous d’échapper et d’afficher la valeur voulue.

Pour rendre une colonne triable, il faut en plus déclarer son slug via le filtre manage_edit-{post_type}_sortable_columns, puis intercepter la requête avec le hook pre_get_posts pour définir orderby et meta_key.

Exemple

<?php
add_filter( 'manage_produit_posts_columns', function ( $cols ) {
    $cols['prix'] = 'Prix';
    return $cols;
} );

add_action( 'manage_produit_posts_custom_column', function ( $col, $post_id ) {
    if ( 'prix' === $col ) {
        echo esc_html( get_post_meta( $post_id, '_prix', true ) );
    }
}, 10, 2 );

Bon à savoir

  • L’ordre des colonnes dans le tableau final suit l’ordre des clés du tableau retourné : pour repositionner une colonne, il faut reconstruire tout le tableau plutôt que d’y ajouter simplement un élément.
  • Les utilisateurs peuvent masquer une colonne personnalisée depuis l’écran d’options, ce qui est un comportement natif à ne pas chercher à bloquer.
  • Sur un site multisite avec beaucoup de contenus, une colonne calculée coûteuse en requêtes SQL peut ralentir sensiblement l’écran de liste : mieux vaut mettre le résultat en cache transitoire.