# « La révision demandée n’existe plus » : le nettoyage des révisions de template

> Quand une ancienne version d'un gabarit disparaît sans explication, la cause se trouve souvent du côté d'un nettoyage de révisions trop agressif.

- Auteur : WordPress Développement
- Publié le : 2021-09-06
- Mis à jour le : 2021-09-06
- Catégorie : Éditeur de site (FSE)
- URL : https://www.wpmoderne.fr/fse/revision-demandee-existe-plus-nettoyage-revisions-template/

## L’essentiel

- Les gabarits héritent des révisions comme les articles
- Un plugin de nettoyage agressif peut en être la cause
- wp post list permet de vérifier l'historique restant

« La révision demandée n'existe plus. » Ce message, familier à qui a déjà navigué dans l'historique de révisions d'un article WordPress, réapparaît parfois là où on ne l'attend pas : dans l'historique d'un gabarit de l'éditeur de site expérimental, alors qu'une modification récente semblait pourtant avoir été enregistrée correctement.

Ce billet ne traite pas des révisions des styles globaux, qui suivent un mécanisme distinct. Il se concentre sur les révisions des gabarits eux-mêmes, stockés dans le post type `wp_template`, et sur ce qui peut expliquer la disparition d'une ancienne version.

## Symptôme

En ouvrant l'historique d'un gabarit modifié plusieurs fois au cours des dernières semaines, seule la version la plus récente apparaît, alors que plusieurs modifications intermédiaires avaient été effectuées. Tenter d'accéder directement à une ancienne révision par son identifiant, via une URL construite manuellement, affiche le message « La révision demandée n'existe plus ».

## Diagnostic

Le post type `wp_template` déclare le support des révisions au même titre que n'importe quel article, ce qui signifie que chaque modification d'un gabarit devrait, en théorie, générer une nouvelle entrée de révision, stockée elle aussi dans la table des articles avec un statut particulier.

```
wp post list --post_type=wp_template --fields=ID,post_title,post_status
```

Cette commande WP-CLI liste les gabarits existants. Une commande complémentaire permet de vérifier les révisions réellement conservées :

```
wp post list --post_type=revision --post_parent=142 --fields=ID,post_date
```

Sur le site concerné, cette seconde commande ne retourne aucune ligne, alors que plusieurs modifications avaient été effectuées sur le gabarit d'identifiant 142. Les révisions ont bel et bien été supprimées, pas simplement rendues inaccessibles depuis l'interface.

> L'essentiel à retenir : Les gabarits héritent des révisions comme les articles ; Un plugin de nettoyage agressif peut en être la cause ; wp post list permet de vérifier l'historique restant

## La cause identifiée

L'enquête mène vers une extension de nettoyage de base de données, installée depuis plusieurs mois, configurée pour supprimer automatiquement toute révision d'article de plus de sept jours. Cette extension n'a pas été pensée avec les gabarits en tête, et applique sa règle de nettoyage indifféremment à tous les post types supportant les révisions, y compris `wp_template`.

- Une règle de nettoyage générique ne distingue pas un article d'un gabarit.
- Un gabarit modifié rarement peut voir toutes ses révisions supprimées avant même qu'un besoin de retour en arrière ne se manifeste.
- L'interface de l'éditeur de site expérimental n'avertit pas explicitement de cette suppression silencieuse.

## Correctif

La solution la plus directe consiste à exclure explicitement le post type `wp_template`, ainsi que `wp_template_part`, des règles de nettoyage automatique de l'extension concernée. La plupart des extensions de ce type proposent un réglage listant les post types concernés par le nettoyage ; il suffit d'en retirer ces deux entrées.

```
add_filter( 'nettoyage_revisions_post_types', function( $types ) {
    return array_diff( $types, array( 'wp_template', 'wp_template_part' ) );
} );
```

Ce filtre, propre à l'extension utilisée dans ce cas précis, illustre le principe général : toute règle de nettoyage automatisée doit explicitement épargner les gabarits, sous peine de priver l'équipe d'un filet de sécurité pourtant utile.

## Prévention

Avant d'installer toute extension de nettoyage de base de données sur un site utilisant l'éditeur de site expérimental, il devient nécessaire de vérifier explicitement son comportement vis-à-vis des post types de gabarits. Un test sur un environnement de développement, en modifiant un gabarit plusieurs fois puis en vérifiant la persistance de ses révisions après une semaine, permet de détecter le problème avant qu'il ne touche un site en production.

> Un mécanisme de nettoyage conçu pour les articles ne doit jamais être appliqué aveuglément aux gabarits : ce sont deux usages qui, malgré une structure de données commune, méritent des règles de conservation différentes.

## En résumé

La disparition de révisions d'un gabarit trouve rarement son origine dans l'éditeur de site expérimental lui-même, mais plutôt dans des mécanismes de nettoyage périphériques mal calibrés. Vérifier les réglages de toute extension de nettoyage de base de données, et y exclure explicitement les post types de gabarits, évite ce type de mésaventure.
