# Statut de publication

> Valeur qui détermine l'état de visibilité d'un contenu dans WordPress : brouillon, publié, en attente, privé, programmé ou corbeille.

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

Un même article traverse souvent plusieurs vies avant d'atteindre sa forme finale : d'abord une idée informe, puis une relecture en attente de validation, enfin une mise en ligne publique. WordPress modélise chacune de ces étapes par une valeur unique, stockée dans la colonne `post_status` de la table `wp_posts`.

## Les statuts natifs et leur enregistrement

Le cœur en fournit sept : `publish`, `draft`, `pending`, `private`, `future`, `trash` et `auto-draft`. Chacun est déclaré par `register_post_status()`, une fonction qu'une extension peut également appeler pour créer un statut personnalisé, par exemple `en_relecture` pour un flux éditorial à validation multiple.

Tout changement de statut déclenche automatiquement deux hooks : un générique, `transition_post_status`, et un spécifique nommé selon le schéma `{ancien}_to_{nouveau}`, comme `draft_to_publish`.

## Exemple : un statut personnalisé

```
<?php
register_post_status( 'en_relecture', array(
    'label'       => 'En relecture',
    'public'      => false,
    'internal'    => true,
    'label_count' => _n_noop( 'En relecture <span class="count">(%s)</span>',
                               'En relecture <span class="count">(%s)</span>' ),
) );
```

## Bon à savoir

- Le statut `private` rend un contenu visible uniquement aux utilisateurs disposant de la capacité `read_private_posts`, contrairement à une simple protection par mot de passe qui reste, elle, publique mais chiffrée d'accès.
- Une requête `WP_Query` lancée sans précision de `post_status` côté public ne retourne jamais les contenus en corbeille ou en brouillon, par sécurité.
- La corbeille n'est pas une suppression : c'est un statut temporaire, purgé automatiquement au bout de 30 jours par la tâche planifiée `wp_scheduled_delete`.
