Magazine Blog

Gérer le versionning des articles WordPress… et optimiser la base de données

Publié le 22 octobre 2009 par Maccimum

Depuis la version 2.6 de WordPress, la fonction Post Revisions permet de conserver les révisions d’un article. Pour rappel, les révisions sont les versions intermédiaires de vos billets que vous enrregistrez au fur et à mesure que vous les écrivez. Cettte fonctionnalité est indispensable si vous êtes plusieurs rédacteurs à travailler sur les mêmes articles afin de pouvoir rétablir toutes les versions précédentes en cas d’erreur ou de mauvaise manipulation, un peu à la façon du système de versionning de Wikipedia…

Bien que très pratique, cette fonctionnalité est beaucoup trop gourmande en espace disque. En effet, chaque révision prend grosso modo autant de place que le billet finalement publié. Toutes ces versions sont stockées dans la table des articles (wp_posts). Si vous ne limitez pas le nombre de ces versions, et si vous travaillez directement dans WordPress, vous pouvez très rapidement avoir plusieurs dizaines de versions par articles. La table wp_posts peut vite devenir disproportionnée.

wordpress-database-versionning

Il devient donc vite indispensable de supprimer ces révisions pour optimiser sa base de données.

Voici deux manipulations faciles à mettre en place et vraiment efficaces pour gérer ou supprimer définitivement les « révisions » de billets :

Modifier la constante WP_POST_REVISIONS

Il est possible de se prémunir une fois pour toutes de ces révisions intempestives en ajoutant une constante dans le fichier wp-config.php situé à la racine du blog (et non dans le dossier de son thème). Cette constante peut peut prendre trois formes :

1°) Pour désactiver définitivement les révisions, il faut rajouter la ligne suivante :

  1. define(‘WP_POST_REVISIONS’,‘0′);

2°) Pour choisir le nombre de révisions à garder, il faut insérer le code suivant :

  1. define (‘WP_POST_REVISIONS’, N); // remplacer N par le nombre de révisions souhaitées.

3°) Pour contrôler le délai entre deux sauvegardes automatiques (et ainsi en limiter le nombre), le code sera le suivant :

  1. define(‘AUTOSAVE_INTERVAL’, xxx); // remplacer xxx par le nombre de secondes entre chaque sauvegarde automatique.

Utiliser la requête SQL DELETE

Avertissement : Les requêtes proposées dans cet article ne sont pas anodines. Agissez avec prudence. Toutes modifications effectuées sur la base de données de votre blog Wordpress peuvent être fatales et irréversibles. Si vous n’êtes pas certain de ce que vous faites, pensez à faire une sauvegarde avant toute chose.

Remarque préliminaire : Toutes les opérations proposées dans cet article nécessitent d’avoir un accès direct à la base de données. Votre hébergeur dispose certainement d’un outil pour cela, l’outil le plus répandu étant phpmyadmin.

Si vous n’avez pas ajouté la constante WP_POST_REVISIONS dès l’installation de votre blog, il vous faudra supprimer les révisions existantes.

database-optimizing

1°) Pour cela, rien de plus simple. Lancez phpmyadmin ou la console MySQL de votre serveur et entrez la requête SQL suivante :

  1. DELETE FROM wp_posts WHERE post_type = ‘revision’;

Remarque : adapter la requête si vous avez changé le préfixe de table dans le fichier wp-config.php, comme cela est conseillé pour des raisons de sécurité (dans l’exemple ci-dessus ‘wp’, le préfixe par défaut).

2°) Pour un nettoyage plus complet, la requête suivante permet d’effacer deux entrées de tables supplémentaires, également attachées aux sauvegardes automatiques : wp_term_relationships et wp_postmeta.

  1. DELETE a,b,c
  2. FROM wp_posts a
  3. LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
  4. LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
  5. WHERE a.post_type = ‘revision’

3°) 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:

  1. DELETE FROM wp_posts
  2. WHERE post_type = "revision"
  3. AND post_date < "2009-11-01"; // Adaptez la date à vos besoins.

4°) Avant de supprimer quoique ce soit, vous pouvez vérifier ce que la requête SQL va enlever. Exécutez pour cela la requête suivante:

  1. SELECT ID, post_type, post_date
  2. FROM `wp_posts`
  3. WHERE post_type = "revision" AND post_date < "2008-11-01" ORDER BY post_date DESC;

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

Sources : Emmanuel Georjon – WordPress: Nettoyer la base de données.
——
maccimum-sign-blogPour tous renseignements complémentaires, contactez-nous :
www.maccimum.fr (communication globale, tous supports, tous médias).


Retour à La Une de Logo Paperblog

A propos de l’auteur


Maccimum 4 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazines