Tout savoir sur WordPress
Tutoriel WordPress

Désactiver et supprimer les révisions d’articles de WordPress

Les révisions sont des sauvegardes des articles automatiquement enregistrés par WordPress. Cette fonctionnalité peut vite devenir un gouffre pour la base de données.

Une fonction de WordPress consiste à enregistrer des versions de vos articles. Bien qu’elle soit pratique, cette fonctionnalité alourdit rapidement votre base de données.

Afin d’alléger la base de données, nous allons supprimer puis désactiver les révisions !

Pour effacer les révisions d’articles déjà présentes dans la base de données ainsi que les meta données enregistrées, on les supprime directement via une requête SQL.

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


DELETE 		a,b,c
FROM 		wp_posts a
LEFT JOIN 	wp_term_relationships b
ON 			(a.ID = b.object_id)
LEFT JOIN 	wp_postmeta c
ON 			(a.ID = c.post_id)
WHERE        a.post_type = 'revision';

[/pastacode]

Pour désactiver la fonctionnalité de WordPress, il suffit d’ouvrir le fichier wp-config.php et y ajouter la constante WP_POST_REVISIONS.

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]

define('WP_POST_REVISIONS', false);

[/pastacode]

Cet article a été mis à jour il y a 4729 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

18 Commentaires

  1. @Yoann : Et oui, laisser les révisions est le meilleur moyen pour occuper de la place inutile dans une base de données !

  2. Bonjour,
    Je ne comprends pas où il faut placer le code qui permet de supprimer les révisions déjà présentes (“dans la base de données” –> mais encore ??)
    Je ne suis pas une pro … :/

  3. @Flobogo : Il faut vous rendre sur le PHPMyAdmin de votre serveur pour pouvoir exécuter la requête.

    Si vous ne comprenez pas, il existe le plugin WP-Optimize qui vous permettra de supprimer les révisions très facilement à l’aide d’un espace d’administration.

  4. Est-il possible plutôt que de les supprimer, de ne garder que les 4 ou 5 dernières révisions (par exemple) ?

  5. @Christophe : Pour garder un nombre précis, il suffit de faire define('WP_POST_REVISIONS', X); ou X est égal au nombre de révisions à garder.

  6. Bonjour,

    Comme nous le conseille le module de sécurité WSD security , j’ai changé le préfixe de la table , je remplace le wp par mon nouveau nom dans la requête SQL , mais faut-il changer aussi “WP_POST_REVISIONS “par “XXX_POST_REVISIONS”

  7. @Paulo: Non, cela ne dépend pas du préfix de la BDD, il faut laisser WP_POST_REVISIONS .

  8. Bonjour,

    J’ai mis la ligne define(‘WP_POST_REVISIONS’, false);en tête de mon fichier config.php et pourtant je trouve toujours des révisions .

  9. @paulo: Cela permet de “désactiver” les révisions, mais ça ne supprime pas les anciennes.

  10. Merci Jonathan,

    Enfin une vrai soluce pour ne garder que les 5 dernières revisions

    Juste dommage que WP intègre pas directement en admin de simples cases à cocher pour virer les anciennes.

  11. Bonjour,

    Merci ce conseil astucieux. J’ai supprimé les révisions d’articles avec du succès…
    Mais je change d’avis, j’aimerai de le remettre en place. Avant de faire injecter dans le SQL, je préfère de vous poser la question pour être sûr :

    Est il suffit de mettre “UPDPATE a,b,c” à la place de “DELETE a,b,c” ?

  12. @David: Une fois que les données sont supprimées, il n’est plus possible de les récupérer.

  13. Bonjour,
    J’ai copié-collé le code SQL tel quel et la requête me renvoie “0 ligne supprimée.” et il y a toujours les révisions dans mon wordpress.

    De plus, j’ai copié define (‘WP_POST_REVISIONS’, 3); à la fin de mon config.php mais je peux toujours créer autant de révisions que possible.

    J’ai loupé quelque-chose ?

  14. tu dit:
    Non, cela ne dépend pas du préfix de la BDD, il faut laisser WP_POST_REVISIONS .
    et
    Vous devez adapté le nom de tables avec celle de votre BDD ;)

    question:
    si Database Name: ‘donald’ et la table se nomme : toto_posts

    je dois mettre : define(‘TOTO_POST_REVISIONS’, false); ???

  15. ha, c bon en fait, le nom de tables c’est pour la requête….
    faut bien laissé wp_post en fait comme ta dit.
    ce qui est logique, wordpress va chercher directement le bon nom de la table grâce a cette variable WP_POST_REVISIONS…