10 useful SQL queries to save time with WordPress

Le CMS (Content Management System) WordPress utilise le système de gestion de base de données MySQL dans 99,9% de cas, et occupe plus de 60% de part de marché des CMS devant Drupal (mon préféré…) et Joomla.
WordpressDrupalJoomla
Toutes les informations de WordPress (paramètres, billets, pages, commentaires, catégories, tags, etc.) sont stockées dans la base de données, qui est bien plus lisible et compréhensible que la base de données de Joomla qui à mon humble avis est une “usine à gaz”. Vous pouvez suivre ce lien pour en savoir un peu plus sur la structure de la base de données de WordPress.

La façon la plus simple d’exécuter une requête SQL est d’utiliser PHPMyAdmin. Si vous avez installé WordPress avec succès c’est que vous avez certainement l’adresse du serveur MySQL, le login et le mot de passe; si vous ne connaissez pas l’URL demandez à votre hébergeur, presque tous les hébergeurs PHP/MySQL ont ce logiciel installé sur leurs serveurs (il est en effet facile d’utilisation et vous évite de taper les commandes shell de Linux et autres).

Connaître quelques commandes SQL de base est très important et pourrait vous faire gagner beaucoup de temps. Par exemple vous changez d’adresse URL (ça peut arriver!) ou transférez le site que vous avez développé en local vers le serveur en ligne, 30 pages et 50 billets génèrent en moyenne 400 lignes dans la table wp_posts de votre BD, s’il faut modifier ligne par ligne, comptez le temps que ça prendra… et si vous aviez 100 pages et 300 billets…

I. Vous changez l’URL ou transférez votre site local

1. Changer l’URL et la page d’accueil du site

UPDATE wp_options SET option_value = replace(option_value, 'http://www.AcienURL.com', 'http://www.NouvelURL.com') WHERE option_name = 'home' OR option_name = 'siteurl';

2. Changer l’URL de chaque page et billet

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.AcienURL.com', 'http://www.NouvelURL.com');

3. Changer l’URL dans le contenu des pages et billets

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.AcienURL.com', 'http://www.NouvelURL.com');

II. Commandes d’administration

4. Changer le nom d’utilisateur par défaut Admin

UPDATE wp_users SET user_login = 'NouvelAdministrauetr' WHERE user_login = 'Admin';

5. Changer le mot de passe de l’utilisateur jtouzi

UPDATE wp_users SET user_pass = MD5('NouveauMotPasse') WHERE user_login = 'jtouzi';

6. Assigner tous les articles écrits par l’auteur auteurA à l’auteur auteurB

La première chose à faire est de trouver les ID-auteur, par exemple pour l’auteur auteurA tapez
SELECT ID FROM wp_users WHERE user_login = 'auteurA' LIMIT 1; Assignez ensuite les articles avec la commande:
UPDATE wp_posts SET post_author = 'ID-auteurB' WHERE post_author = 'ID-auteurA';

7. Supprimer toutes les révisions

Lorsque vous éditez un article dans WordPress, par mesure de prudence plusieurs copies sont sauvegardées, ce qui surcharge votre base de données et peut ralentir le chargement des pages. Si vous êtes certains que les versions publiées en ligne sont les bonnes et que vous ne risquez pas de revenir à une version antérieure, supprimez les révisions!
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'

Source de cette requête

7. Supprimer les Posts Meta

Lorsque l’on installe les plugins, plusieurs données sont sauvegardées dans la table wp_postmeta; lorsque l’on en désinstalle, ces données ne sont pas toujours supprimées, ce qui peut ralentir le traitement de données et surcharger votre BD. Une fois que vous connaissez la clé Méta du plugin exécutez la commande:
DELETE FROM wp_postmeta WHERE meta_key = 'CleMeta';

8. Afficher la liste des emails des commentateurs

SELECT DISTINCT comment_author_email FROM wp_comments;
Vous pouvez ensuite utiliser l’option exporter de PHPMyAdmin pour les sauvegarder en fichier PDF ou SQL (en vue de les ajouter à votre Newsletter par exemple)

9. Supprimer tous les Pingbacks et tous les Spams

DELETE FROM wp_comments WHERE comment_type = 'pingback' OR comment_approved = 'spam';

10. Identifier les tags non utilisés

Si vous avez utilisé une requête SQL pour supprimer quelques anciens articles (par exemple DELETE FROM wp_posts WHERE post_date < '2009-12-12 12:00:00'), ce que les tags qui leur avaient été assignés restent dans la base de données, et faussent votre nuage de tags. Pour résoudre de ce problème, exécutez
SELECT * From wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;