vendredi 25 septembre 2026

À propos

Contact

Extensions

register_post_status : des statuts de workflow au-delà de publié

Un studio de design veut qu'un article reste invisible du public mais clairement identifiable par le client comme « en validation », avec son propre libellé et son propre compteur dans l'administration.

Par Clément Hadrot • 6 octobre 2023 • 3 min de lecture • Aucun commentaire
register_post_status : des statuts de workflow au-delà de publié

Un studio de design produit des fiches de recommandations pour des clients externes, stockées comme un CPT recommandation dans WordPress. Le processus de travail comporte une étape intermédiaire cruciale : une fois rédigée par le designer, une fiche doit être visible par le client pour validation, sans être publique, et surtout sans se confondre visuellement avec un simple brouillon interne dans la liste d’administration. Le statut « Brouillon » natif ne porte pas cette nuance : il ne dit rien sur qui doit agir ensuite ni sur l’état réel du processus de validation.

La réponse à ce besoin ne passe pas par une métadonnée personnalisée affichée à côté du statut natif, une solution bancale qui demanderait de dupliquer la logique d’affichage un peu partout dans l’administration. La bonne réponse est de déclarer un véritable statut de publication personnalisé, avec register_post_status(), qui s’intègre alors nativement au même menu déroulant que « Publié » ou « Brouillon ».

Déclarer le statut

add_action( 'init', function() {
    register_post_status( 'en_validation_client', array(
        'label'                     => _x( 'En validation client', 'statut de publication', 'studio-design' ),
        'public'                    => false,
        'internal'                  => false,
        'protected'                 => true,
        'private'                   => false,
        'show_in_admin_status_list' => true,
        'show_in_admin_all_list'    => true,
        'label_count'               => _n_noop(
            'En validation client (%s)',
            'En validation client (%s)',
            'studio-design'
        ),
    ) );
} );

Chaque argument porte une nuance précise qu’il vaut la peine de détailler. public à false garantit que ce statut ne rend jamais la fiche accessible publiquement, même en connaissant son URL directe. protected à true indique que ce contenu nécessite une capacité d’édition pour être consulté dans l’administration, ce qui exclut un simple abonné du site mais permet à un client disposant d’un rôle adapté d’y accéder, à condition que ce rôle porte la capacité appropriée. show_in_admin_status_list et show_in_admin_all_list déterminent respectivement l’apparition du statut dans le menu déroulant d’édition d’une fiche, et son inclusion dans l’onglet « Tous » de la liste d’administration.

Ajouter le statut au menu déroulant de l’écran d’édition

L'essentiel à retenir : Un statut personnalisé s'affiche dans le menu déroulant d'état comme les statuts natifs ; Le compteur de l'onglet de filtre en haut de liste nécessite un argument dédié ; Les capacités de lecture doivent être pensées séparément pour un client externe

Déclarer le statut avec register_post_status() ne suffit pas à le faire apparaître automatiquement dans le menu déroulant visible lors de l’édition d’une fiche : WordPress affiche ce menu à partir d’une liste fixe de statuts natifs, et il faut explicitement y ajouter les statuts personnalisés via un script JavaScript injecté sur l’écran d’édition, une limitation connue de longue date dans le cœur de WordPress :

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi