[WordPress] Optimisez votre base de données en supprimant les « révisions » de billets

Si vous utilisez la plateforme WordPress pour bloguer, et que vous avez installé une version récente (> 2.6), vous avez dû vous apercevoir que celle-ci est devenu plus gourmande en espace disque.

C’est notamment le cas à cause (ou « grâce » dans certains cas) de l’enregistrement des « révisions ».

Que sont les « révisions »?
Il s’agit de versions intermédiaires de vos billets qui sont enregistrées au fur et à mesure que vous les écrivez. Il s’agit d’une fonctionnalité très pratique lorsqu’on écrit un billet en plusieurs fois ou à plusieurs par exemple, pour ne pas perdre un contenu que l’on aurait effacé.

Cependant cette fonctionnalité s’avère gourmande en espace disque sur la base de données car chaque révision prend grosso modo autant de place que le billet finalement publié.

Personnellement je me sers des révisions jusqu’à la publication finale. Mais après cette étape, je n’ai plus besoin de celles-ci. J’ai donc cherché un moyen de les supprimer pour optimiser ma base.

Pour cela, rien de plus simple; une simple ligne de SQL permet de faire un bon nettoyage. Les « révisions » ont un type associé dans l’un des champ de la table des billets. il est donc très facile de l

DELETE FROM wp_posts
WHERE post_type = "revision";

Il suffit d’exécuter cette directive dans l’interface d’administration de votre base de données comme PHPMyAdmin par exemple. Ce faisant, vous allègerez votre base de données.

Si vous ne souhaitez pas tout nettoyer, mais uniquement les billets écrit avant une certaine date, vous pouvez ajouter une clause pour cela.

Par exemple:

DELETE FROM wp_posts
WHERE post_type = « revision »
AND post_date < « 2008-11-01″;
[/sourcecode]

Bien entendu, pensez à adapter la date à vos besoins.

Avant de supprimer, vous pouvez vérifier ce que la requête SQL va enlever. Exécutez pour cela la requête suivante:
[sourcecode language= »sql »]
SELECT ID, post_type, post_date
FROM `wp_posts`
WHERE post_type = « revision » and post_date < « 2008-11-01″ order by post_date desc;
[/sourcecode]

Il peut arriver que la table s’appelle wp_1_posts (sur WordPress mu par exemple).