La liste des Posts dans l’admin est assez basique. Elle montre le titre, l’auteur, la date, les catégories…
Mais cette liste ne montre pas certaines informations qu’on voudrait voir sans avoir à cliquer sur le Post (comme l’image ou les champs personnalisés) et montre peut-être des infos dont on a pas besoin (comme l’auteur).
Ajouter et retirer des colonnes
Il faut utiliser la fonction manage_post_posts_columns
. Sachez que le premier « post » dans le nom de la fonction est une variable et qui définit le type de Post qu’on veut modifier. Donc si on a Custom Post Type qui s’appelle « projet », on utiliserait la fonction manage_projet_posts_columns
.
Imaginons qu’on veuille supprimer la colonne « auteur » et ajouter une pour l’image et une pour un champ personnalisé « couleur ».
function bbx_columns( $column ) { unset( $column['author'] ); $column['image'] = 'Image'; $column['color'] = 'Couleur'; return $column; } add_filter( 'manage_post_posts_columns', 'bbx_columns' );
Bon, on a ajouté 2 colonnes, mais on mets quoi dedans ?
Définir le contenu des nouvelles colonnes
Là on passe par la fonction manage_post_posts_custom_column. Là pareil : le mot « post » peut être remplacé par le nom d’un Custom Post Type.
function bbx_rows( $column, $post_id ) { $custom_fields = get_post_custom( $post_id ); switch ( $column ): case 'image': the_post_thumbnail( 'thumbnail' ); break; case 'color': if ( $custom_fields['color'][0] != '' ): echo '#' . $custom_fields['color'][0] . '<br><span style="background: #' . $custom_fields['color'][0] . '; display: inline-block; height: 20px; width: 20px;"></span>'; else: echo 'Pas de couleur définie'; endif; break; default: break; endswitch; } add_action( 'manage_post_posts_custom_column', 'bbx_rows', 10, 2 );
Résultat :
Libre à vous de définir d’autres colonnes, de choisir le code HTML qui sera affiché…