# Colonne personnalisée

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

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/colonne-personnalisee/

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.
