Aprés avoir lu notre Guide Complet pour Optimiser votre Référencement WordPress, attaquons-nous à la base de donnée.
WordPress repose sur une base de donnée MySQL. C’est une information que la plus part des utilisateurs de WordPress sait déjà. Si ce n’était pas le cas… Sachez que MySQL est un SGDBR Open Source et gratuit qui se trouve chez la plus part des hébergeurs Web. Toutes vos données, billets, commentaires, catégories, paramètres sont stockés dans cette base de données, MySQL. Maintenant vous savez. Si vous souhaitez en savoir plus, un coup d’œil sur le schéma de la base de donnée wordpress pourrait être un bon départ.
Mais pourquoi parler de MySQL ? Pour les ouvertures que nous offrent les requêtes SQL, les automatismes et le gain de temps dans le traitement d’une informations récursive.
Imaginions que vous ayez une modification à faire sur chacun de vos billets, le faire au travers du back office de WordPress peut devenir un pensum, et multiplier le nombre d’erreurs humaines. Cette action pourrait certainement être exécuté en un instant au travers d’une requête SQL.
Découvrons les requêtes SQL qui pourraient vous être à la source d’un immense gain de temps dans votre administration et gestion de votre site WordPress.
Sauvegardez votre Base de Donnée WordPress
Avant de faire quelque changement que ce soit, sauvegardez votre base de donnée. Oui oui, c’est de l’impératif ! Sauvegarder sa base de donnée WordPress avant toute modification doit devenir une habitude, cela vous sauvera la vie en cas de crash… Et ca nous épargnera les pleurnicheurs !
Pour sauvegarder votre base de donnée WordPress, vous pouvez télécharger WP-DB-Backup ou WP-DBManager, deux plugins pour sauvegarder votre base de donnée au travers du panneau d’admin de WordPress.
Mais parler de requêtes SQL et sauvegarder grâce à des plugins, ca craint. Alors, on sort la barbe, et on va faire ca à la mimine. Enfin presque car phpMyAdmin automatise grandement la tâche.
- Connectez-vous à votre interface phpMyAdmin.
- Sélectionnez votre base de donnée WordPress.
- Cliquez sur Export, en haut.
- Sélectionnez toutes vos tables.
- Selectionnez SQLpour exportez au format .sql.
- Cliquez sur Sauvegarder.
- Choisissez le moyen de compression, sélectionnez gzipped.
- Et pour finir, cliquez sur Ok, et après que votre navigateur vous y ait invité, sauvegarder le fichier sur votre poste.
Une solution simple, que je préconise car pas besoin de plugins; et moins de plugins nous avons, mieux nous nous portons 🙂
13 Requêtes SQL pour WordPress
Un moyen simple d’exécuter une requête SQL reste encore phpMyAdmin en ce qui concerne MySQL, bien que cela soit un point de faible pour la sécurité générale de votre site. Mais cela est un autre sujet. Le plugin WordPress SQL Executioner vous permet également d’exécuter à partir de l’admin de WordPress.
Pour faire simple, voici comment utiliser phpMyAdmin :
- Se connecter à son interface phpMyAdmin et sélectionnez votre base de donnée WordPress.
- Cliquez sur l’onglet SQL.
- Copiez/Collez les requêtes que vous souhaitez exécuter.
Note: Toutes nos requêtes partiront du principe que le préfixe de table que vous avez est _wp. Cependant, nous attirons votre attention sur le fait que cela représente une faiblesse de sécurité. Choisir un autre préfixe lors de l’installation est une excellente idée.
Changement du Siteurl & Homeurl
WordPress sauvegarde dans la base de donnée le chemin absolue de l’URL de votre site ainsi que l’adresse de la page d’accueil. Pour ceux qui souhaiterez migrer leur site ou blog wordpress vers un nouveau nom de domaine, il faut changer ces valeurs dans la base de donnée au risque de voir son site qui ne change plus. Il suffit de changer les valeurs Siteurl et Homurl pour que votre site reparte correctement.
Requête SQL WordPress :
UPDATE wp_options SET option_value = replace (option_value, 'http://www.oldsiteurl.com' , 'http://www.newsiteurl.com' ) WHERE option_name = 'home' OR option_name = 'siteurl' ; |
Changer le GUID
Pour la migration de votre site wordpress sur un autre nom de domaine, le changement du champ GUID présent dans la table wp_posts est primordiale. En effet, le GUID est le champ qui est utilisez en tant que chemin absolue.
Requête SQL WordPress :
UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.oldsiteurl.com' , 'http://www.newsiteurl.com' ); |
Changer les URL dans le Contenu
Plutôt que de stocker les URL en chemin relatif, WordPress préfère les stocker en chemin absolue.
Requête SQL WordPress
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.oldsiteurl.com' , 'http://www.newsiteurl.com' ); |
Changer le Chemin de vos Images
Vous avez décidé de sauter le pas ? Vous allez utiliser les services d’un CDN ? C’est une bonne chose. Après avoir fait le nécessaire niveau DNS, il va falloir mettre à jour manuellement les chemins vers vos images. Cette petite requête SQL peut vous faire gagner des heures !
Requête SQL WordPress :
UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="http://www.oldsiteurl.com' , 'src="http://yourcdn.newsiteurl.com' ); |
Du coup, il vous faut aussi remplacer le GUID des images jointes :
UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.oldsiteurl.com' , 'http://yourcdn.newsiteurl.com' ) WHERE post_type = 'attachment' ; |
Mettre à jour les Meta
Utile pour ceux déménageant leurs blogs wordpress d’un site à l’autre.
Requête SQL WordPress :
1
|
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.oldsiteurl.com' , 'http://www.newsiteurl.com' ); |
Changer le Nom d’Utilisateur par Défaut “Admin”
Cela n’est plus automatique, mais combien de blog WordPress ont pour nom d’Admin… Admin. Je pense que c’est inutile de vous préciser que c’est comme dévérouiller le verrou du haut de sa porte d’entrée… Vous simplifiez la vie à un potentiel cambrioleur. Ici vous vous exposez à une attaque par Brute Force.
Solution:
UPDATE wp_users SET user_login = 'VotreNouvelUtilisateur' WHERE user_login = 'Admin' ; |
Changer le Mot de Passe
Besoin de changer le mot de passe de l’admin ou de n’importe lequel de vos utilisateurs WordPress ? Facile.
Requête SQL WordPress :
UPDATE wp_users SET user_pass = MD5( 'new_password' ) WHERE user_login = 'your-username' ; |
Changer l’Auteur d’Articles par un Autre Auteur
Besoin de changer d’auteur pour toute une série d’article ? Pour cela il vous faut l’ID des auteurs en question. Où obtenir l’ID ? Rendez-vous sur votre interface WordPress, dans vos profil utilisateurs. Regardez votre barre d’adresse… et recherchez user_id et le tour est jouée.
Requête SQL WordPress :
UPDATE wp_posts SET post_author = 'new-author-id' WHERE post_author = 'old-author-id' ; |
Supprimer les Révisions
Chaque sauvegardes entraine un enregistrement dans la base de donnée. Imaginez que vous ayez sauvegardé votre dernier article 7 fois, alors 7 copies existent dans la base de donnée. Votre blog possède plusieurs centaines de billets…. je vous laisse imaginer le nombre de billets fantômes qu’il doit y avoir sur votre base de donnée.
Requête SQL WordPress :
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' |
Supprimer les Meta de vos Billets
Installer ou supprimer un plugin est une tâche pour le moins commune. Mais saviez-vous que des informations resteront tout de même inscrite dans la base de donnée, au niveau du champ post_meta table. En plus de réduire la taille de vos bases, cela redonnera un petit coup de fouet à la vitesse d’exécution de votre blog.
Requête SQL WordPress :
DELETE FROM wp_postmeta WHERE meta_key = 'your-meta-key' ; |
Exporter les Adresses Emails de Vos Commentateurs
Et oui, on peut récupérer toutes les adresses emails des personnes ayant commenté sur votre blog. Sympa non ? Mais attention à vos condition d’utilisation. Vous ne voudriez pas passer pour un vilain spammeur je suis sur.
Requête SQL WordPress
SELECT DISTINCT comment_author_email FROM wp_comments; |
Once you have the result, under Query results operations, select export to export all the emails in phpMyAdmin.
Supprimer tout les Pingback
Trop populaire ? Besoin de faire de la place dans ces milliers de Pingback qui polluent votre base ? Chanceux !
Requête SQL WordPress:
DELETE FROM wp_comments WHERE comment_type = 'pingback' ; |
Supprimer vos Commentaires Spam
Besoin de supprimer en masse des commentaire classés comme Spam ? Facile !
Requête SQL WordPress:
DELETE FROM wp_comments WHERE comment_approved = 'spam' ; |
- 0 = Commentaire en cour de modération
- 1 = Commentaire approuvé
- spam = Commentaire classé comme Spam
Identifier des Tags Non Utilisés
Si vous supprimé manuellement des billets dans WordPress, directement à partir de votre base de donnée alors il vous faudra aussi effacer les tags en relations.
Requête SQL WordPress:
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; |
À Vot’ Bon Coeur
Vous aussi vous connaissez des requêtes SQL permettant de se simplifier la vie sous WordPress ? Fait tourné !
Merci pour votre article bien utile.
Cependant, j’ai réalisé une requete différente de la votre pour identifier les tag non utilisés.
J’ai remarqué que certain tag possédait un 0 dans la colonne count de wp_term_taxonomy mais qu’il y avait quand meme une relation dans la table wp_term_relationships.
J’avais alors réalisé cette requete pour être sur que le tag n’ai aucun lien avec un article :
select * from wp_terms term
inner join wp_term_taxonomy taxo on taxo.term_id = term.term_id and taxo.taxonomy = ‘post_tag’
left join wp_term_relationships rel on rel.term_taxonomy_id = taxo.term_taxonomy_id
where
rel.object_id is null;
Auriez-vous une idée de pourquoi il existe une relation dans wp_term_relationships alors que le count de wp_term_taxonomy est à 0 ?
Le fait de supprimer directement tous les tags avec votre requete n’est pas trop direct ?
Merci
Erratum : dans les requêtes j’ai mis un mauvais préfixe sur la table : après UPDATE il faut mettre “wp_posts”. Vous pouvez modifier mon message en conséquence et supprimer celui-ci.
Remarquez que plusieurs de vos requêtes est en fait la même qui s’effectue directement sur le contenu des articles (post-content). Et avec cette dernière on peut donc imaginer n’importe quel remplacement de chaine de caractères. Par exemple, pour le mot majuscule “Ecoute” que l’on voudrait écrire plus proprement par “Écoute” on aurait ceci :
UPDATE xp_posts SET post_content = REPLACE(post_content, ‘ Ecoute’, ‘ Écoute’);
Ou encore, l’accent sur le A majuscule en début de phrase (À) :
UPDATE xp_posts SET post_content = REPLACE(post_content, ‘ A ‘, ‘ A ‘);
Dans tous les cas il faut être prudent dans les remplacement des chaines pour ne pas altérer un mot présent dans le permaliens d’un article (pour notre premier exemple : domaine.com/blala-Ecoute-blala/), c’est pourquoi j’ai mis un espace avant le mot : ainsi je suis sur qu’il s’agit d’un mot et non d’un permalien. Un espace après le mot c’est plus délicat : il peut y avoir une ponctuation, comme une virgule (sauf dans le cas du À majuscule).
Super ressource assez complète. Je garde votre article en bookmark, ça me sera surement utile et je n’aurais plus qu’à faire un copier/coller de ces requêtes SQL pour gagner du temps. Je pense même qu’il serait judicieux de mettre en place un CRON pour automatiser certaines tâches qui consiste à purger la table.
Il faut continuer de nous arroser avec des articles de cette qualité.
Merci encore.
Merci c’est pratique d’avoir toutes ces requêtes, surtout celles concernant les problématiques de migration.
Bonjour, tout d’abord j’aimerais saluer ton excellent article sur le référencement. Je rencontre un problème sur phpmyadmin quand je tente d’uploader dans wp_sfwp le fichier .zip
Il m’affiche une erreur :
ERROR: C1 C2 LEN: 2 3 63
STR:
CVS: $Id: sqlparser.lib.php,v 2.36 2005/08/08 20:22:11 lem9 Exp $
MySQL: 5.0.91-log
USR OS, AGENT, VER: Mac SAFARI 5.0.535
PMA: 2.6.4-pl3
PHP VER,OS: 5.3.3-7+squeeze3 Linux
LANG: fr-utf-8
SQL: PKP?>???:?0??wp_sfwp.sql?]is9????vcb??eI>??s???YI?H?
Aurais-tu un conseil à me suggérer? Car du coup, je suis bloqué à cette étape.
Un grand merci par avance.
après visite sur http://www.bigblog.fr/ je me demande si WP-DBManager à pas une faille.quand à la sauvegarde de la bdd: je conseille de sauvegarder séparément la structures et les données.merci pour les différente requête, j’en avais besoin !