Le WordPress d'aujourd'hui, décodé pour les développeurs

Extensions

WP_POST_REVISIONS dans wp-config.php : ce qu’une extension doit respecter

Cette constante définie dans wp-config.php encadre le nombre de révisions conservées. Une extension qui écrit ses propres routines de sauvegarde ne peut pas l'ignorer.

Par WordPress Développement • 8 décembre 2020 • 4 min de lecture • Aucun commentaire
WP_POST_REVISIONS dans wp-config.php : ce qu'une extension doit respecter

« La documentation officielle du Codex précise que WP_POST_REVISIONS accepte trois formes : un booléen ou un entier », rappelle la page dédiée aux constantes de configuration. Cette formulation simple cache une constante dont le comportement exact mérite d’être compris avant d’écrire la moindre routine de sauvegarde personnalisée dans une extension.

Définie dans wp-config.php, cette constante contrôle combien de versions antérieures d’un contenu WordPress conserve automatiquement. Une extension qui enregistre ses propres versions d’un contenu, par exemple pour un système d’approbation éditoriale, doit composer avec cette limite plutôt que la contourner.

Les trois valeurs possibles et leurs effets

  • true (valeur par défaut si la constante n’est pas définie) : nombre de révisions illimité
  • false : aucune révision n’est enregistrée, la fonctionnalité est désactivée
  • Un entier positif, par exemple 5 : WordPress conserve au maximum ce nombre de révisions par contenu, en supprimant les plus anciennes
// Dans wp-config.php
define( 'WP_POST_REVISIONS', 5 );

Comment WordPress applique la limite en interne

La fonction wp_save_post_revision(), appelée automatiquement à chaque enregistrement d’un contenu qui supporte les révisions, lit cette constante via wp_revisions_to_keep() avant de décider s’il faut créer une nouvelle révision et, le cas échéant, en supprimer une plus ancienne pour respecter la limite.

$nombre_max = wp_revisions_to_keep( $post );

if ( 0 === $nombre_max ) {
    return;
}

Ce filtre wp_revisions_to_keep constitue d’ailleurs le point d’extension officiel si une extension a besoin d’ajuster la limite pour un type de contenu précis, sans toucher à la constante globale qui s’applique à l’ensemble du site :

add_filter( 'wp_revisions_to_keep', function( $nombre, $post ) {
    if ( 'contrat' === $post->post_type ) {
        return 20;
    }
    return $nombre;
}, 10, 2 );
L'essentiel à retenir : La constante se lit, ne se contourne jamais en code ; wp_save_post_revision respecte déjà la limite ; Une routine maison doit vérifier avant d'insérer

Ce qu’une routine maison ne doit pas faire

Une extension qui construit son propre mécanisme de versionnage, par exemple pour horodater des snapshots d’un contenu avant une action métier particulière, tombe parfois dans le piège d’insérer directement des lignes dans la table wp_posts avec post_type => 'revision', en ignorant la limite configurée. Cela crée deux problèmes distincts.

Une incohérence entre deux sources de vérité

Si une extension insère ses propres révisions sans passer par wp_save_post_revision(), l’écran natif de comparaison des révisions affiche un mélange de versions générées par WordPress et par l’extension, sans que la limite configurée s’applique de façon homogène aux deux origines.

Un nettoyage qui ne se déclenche jamais

Le nettoyage automatique des révisions excédentaires repose sur le passage par les fonctions natives. Des révisions insérées directement en base, en dehors de ce circuit, s’accumulent indéfiniment, même si la constante limite le nombre à cinq pour les révisions générées normalement.

La bonne pratique : passer par wp_save_post_revision ou vérifier soi-même

$revision_id = wp_save_post_revision( $post_id );

if ( $revision_id ) {
    update_post_meta( $revision_id, 'wpm_declencheur', 'validation_editoriale' );
}

Réutiliser wp_save_post_revision() garantit que la limite configurée dans wp-config.php, ou ajustée via le filtre, s’applique de façon uniforme, tout en profitant de l’écran de comparaison natif pour retrouver ces versions plus tard.

ApprocheRespecte la limiteVisible dans l’écran natif
wp_save_post_revision()OuiOui
Insertion directe en baseNon, sauf code additionnelPartiellement
Table personnalisée dédiéeSans objetNon, écran séparé requis

Avant d’écrire une ligne de code pour versionner un contenu, la première question à se poser est si le mécanisme natif de révisions, avec son filtre d’ajustement, ne couvre pas déjà le besoin.

En résumé

WP_POST_REVISIONS n’est pas qu’un réglage de configuration à ignorer une fois défini : c’est une limite que toute routine de sauvegarde personnalisée doit respecter, soit en réutilisant les fonctions natives, soit en appliquant sa propre limite cohérente si une table dédiée est réellement justifiée par le besoin.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

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

Voir tous ses articles

Dans la même veine

À lire aussi