Pas Tout A Fait

Aller au contenu | Aller au menu | Aller à la recherche

Requêtes SQL pour nettoyer la base de données de Wordpress

Dernière mise à jour le 07 mai 2012

Après quelques mois d'utilisation, la base de données de votre Wordpress peut contenir des caractères étranges, des données obsolètes, ou pires...
Cet article présente quelques requêtes SQL pour faire le ménage dans tout ça.

Logo-Wordpress.png


Avant de commencer

Avant de manipuler une base de données, on réalise toujours une sauvegarde :

mysqldump -u utilisateur -p nom-de-la-base > /chemin/vers/base.db.sql

C'est indispensable !


Retirer les caractères illisibles

Les problèmes d'encodages de caractères peuvent être désastreux. Alors au lieu de nettoyer chacun de vos articles un par un, voici une série de requêtes à lancer pour supprimer tous les caractères illisibles de vos articles.

UPDATE wp_posts SET post_content = REPLACE(post_content, '“', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, '”', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, '’', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, '‘', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, '—', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, '–', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, '•', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, '…', '…');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '“', '“');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '”', '”');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '’', '’');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '‘', '‘');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '—', '–');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '–', '—');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '•', '-');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '…', '…');

Fermer les tracksbacks sur les articles

Vous utilisez les trackbacks et les pings ?
Pas mal de gens les trouvent inutiles, semble-t-il. Toujours est-il que vous pouvez les fermer pour l'ensemble de vos articles plutôt que un par un, avec la requête ci-dessous :

UPDATE wp_posts SET ping_status = 'closed';

Se débarrasser de tous les shortcodes inutilisés

Les shortcodes sont très pratiques, mais ils ont un gros problème ; une fois que vous ne les utilisez plus (suite à un changement de thème par exemple), vous les retrouverez en tant que texte dans vos articles.
Voici une requête pour les retirer, indiquez simplement le shortcode à supprimer en remplacement de "supprimer".

UPDATE wp_post SET post_content = replace(post_content, '[supprimer]', '' ) ;

Supprimer un meta spécifique

Si vous avez ajouté un champ personnalisé à un article, mais que vous n'en avez plus l'usage après un certain temps, vous pouvez rapidement retirer ce champ avec cette requête :

DELETE FROM wp_postmeta WHERE meta_key = 'votremeta';

Supprimer les tags inutilisés

Il y a 4 - 5 ans, les tags étaient très populaires. Mais aujourd'hui, les blogs sont nombreux à ne plus les utiliser. Si c'est votre cas, offrez un régime à votre base de données en supprimant les tags inutilisés.

DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );
DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms);
DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);

Supprimer le cache des flux

Wordpress enregistre le cache des flux dans la table wp_options. Pour vider ce cache, vous pouvez utiliser la requête suivante :

DELETE FROM `wp_options` WHERE `option_name` LIKE ('_transient%_feed_%')

Supprimer les brouillons et leurs métadonnées

Les brouillons sont très utiles, mais si vous ne les supprimez pas de temps en temps, votre base de données va devenir énorme. La requête ci-dessous supprime tous les brouillons et les métadonnées qui leurs sont associés.

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

Supprimer les vieux articles

Vous n'avez plus besoin des articles publiés depuis trop longtemps ? Supprimez-les avec la requête suivante, qui élimine les articles ayant plus de 600 jours. Combinée avec la requête du dessus, vous pouvez supprimer les articles et leurs métadonnées.

DELETE FROM `wp_posts`
WHERE `post_type` = 'post'
AND DATEDIFF(NOW(), `post_date`) > 600

Retirer le USER AGENT enregistré avec chaque commentaire

Par défaut, quand un visiteur laisse un commentaire sur votre blog, Wordpress enregistre le USER AGENT du navigateur utilisé. C'est pratique d'un point de vue statistiques, mais 95 % des personnes qui gèrent un blog n'en font rien. Cette requête remplace le USER AGENT par une variable vide, ce qui peut réduire la taille de votre base de données si vous avez beaucoup de commentaires.

update wp_comments set comment_agent ='' ;

Désactiver tous les plugins

Parfois, lors d'un mise à jour de moteur de votre blog par exemple, vous devez désactiver tous les plugins. En fonction de nombre de plugins que vous utilisez, cet opération peut vite prendre beaucoup de temps et devenir très ennuyeuse.
Voici une requête pour désactiver l'ensemble des plugins d'un coup :

UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';

Bien sûr, vous pouvez également réaliser cette tâche dans le backend de votre wordpress.


Changer l'auteur de tous les articles

Besoin de changer l'auteur de nombreux articles ? Si oui, vous n'avez pas besoin de le faire manuellement. Voici une requête pratique pour le faire d'un seul coup.

La première étape consiste à obtenir l'ID des utilisateurs de votre Wordpress, avec cette requête :

SELECT ID, display_name FROM wp_users;

Vous avez maintenant la liste des utilisateurs avec leurs ID. Disons que NEW_AUTHOR_ID est l'ID du nouvel auteur, et que OLD_AUTHOR_ID est celui de l'ancien :

UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

Et voilà ! Une fois cette deuxième requête terminée, tous les articles de l'ancien auteur apparaissent comme écrit par le nouveau.

Source : Traduction de l'article "10 requêtes SQL utiles pour nettoyer la base de données de Wordpress" lisible sur http://www.catswhocode.com.

Matthieu Patout

Auteur: Matthieu Patout

Restez au courant de l'actualité et abonnez-vous au Flux RSS

Les commentaires sont fermés


aucune annexe



Voir Aussi

gitlist-logo.png

Installation et configuration de GitList

Les interfaces web pour consulter les dépôts Git ne manquent pas. Un nouveau venu plutôt sympathique...

Lire la suite

v6day-logo1.png

Activer le support IPv6 de NGinx

Voici un très court billet pour se souvenir de comment activer IPv6 avec NGinx, et pour régler le...

Lire la suite