Jeudi 18 Septembre 2014

Quelques commandes SQL utiles pour WordPress.

Guillaume REYNAUD24 décembre 2012 Wordpress14min 13
Quelques commandes SQL utiles pour WordPress.

Même si l’administration de WordPress peut se faire depuis son interface graphique, il peut être utile de connaître quelques commandes SQL, pour faire de l’administration avancée. Ces commandes peuvent aussi être très utile pour une migration de thème ou d’hébergeur. Voyons ensembles quelques rudiments.

Commandes_SQL_1

Pour ceux qui ne sont pas au courant, une commande sql permet d’effectuer une action générale sur des tables sql, par exemple, au lieu de supprimer un par un tous les commentaires indésirables, on pourra supprimer tous les commentaires indésirables en une commande !

Pour exécuter une commande SQL, le plus simple est de se connecter sur l’interface d’administration de son blog puis de lancer l’utilitaire Phpmyadmin.

Depuis mon interface d’administration Cpanel, je vais dans la section Base de données et je clic sur PhpMyAdmin.

Commandes_SQL_2

Commandes_SQL_3

 Ensuite je sélectionne ma base de données et je clic sur l’onglet SQL.

Commandes_SQL_4

Maintenant vous pouvez utiliser les commandes SQL. Nous allons en voir quelques unes qui pourront vous être utiles.

Avant toute chose voici une représentation graphique des tables de WordPress à partir de la V3. (Ce schéma affiche toutes les tables de wordpress dans une installation de base hors plugins.)

Commandes_SQL_5

  • Supprimer les sauvegardes automatiques des billets.

Lorsque vous rédigez un billet, WordPress enregistre automatiquement une sauvegarde de ce billet dans votre base de données pour une restauration ultérieure en cas de problèmes.
Vous pouvez donc supprimer les sauvegardes automatiques existantes si vous n’avez eu aucun problème grâce à la commande suivante :

DELETE FROM wp_posts WHERE post_type = ‘revision’

Avant de faire un DELETE, vous pouvez remplacer cette commande par un SELECT, qui permet d’afficher le résultat d’une commande, par exemple :

SELECT * FROM wp_posts WHERE post_type = ‘revision’

Cette requête permet d’afficher tous les billets ayant une sauvegarde automatique.

Commandes_SQL_6

Maintenant cliquer sur Exécuter.

Commandes_SQL_7

Vous voyez que votre requête s’exécute correctement et vous affiche les résultats. Maintenant remplacer le SELECT par un DELETE et gagner de l’espace dans votre base de données.

Commandes_SQL_8

Commandes_SQL_9

 Cliquer sur OK pour confirmer la suppression.

Commandes_SQL_10

Vos lignes sont supprimées correctement. Vous venez de gagner un peu d’espace dans votre base de données.

A titre d’information, juste avec cette requête la taille de la table wp_posts avant 6,4 Mo après la requête et une optimisation de la table 3,2 Mo, nous avons diminué de 50% la taille de notre table.

Voilà un bon exemple de la puissance des requêtes SQL, sans plugin supplémentaire. Attention toutefois de bien maitriser ce langage car toutes actions est irréversibles et peut planter votre blog.

  • Modifier le mot de passe d’un utilisateur

Grâce à cette commande nous allons modifier le mot de passe d’un utilisateur, ici pour « Admin »

UPDATE wp_users SET user_pass = MD5( ‘Nouveau mot de passe’ ) WHERE user_login = ‘Admin’

Commandes_SQL_11

 La fonction MD5 permet de crypter votre mot de passe.

Commandes_SQL_12

  • Supprimer les META KEY laissé par des extensions que vous n’utilisez plus.

Certaine extension ajoute automatiquement des « meta » dans vos articles et gonfle votre base de donnée. Si vous n’utilisez plus ces extensions, vous pouvez supprimer les « meta » obsolètes.

WordPress a la particularité de permettre aux utilisateurs d’assigner des champs personnalisables à un article. Ces informations supplémentaires arbitraires sont aussi connues sous le nom de meta-données ou meta key.

Exemple de meta key dans un article :

Commandes_SQL_13

DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';

Ici nous allons supprimer le champ personnalisé fs-picture. Pour utiliser la requête remplacer YourMetaKey par fs-picture.

Commandes_SQL_14

  • Supprimer l’image à la une de tous vos articles.

Pour les besoins d’un thème j’ai été obligé de renseigner le nouveau champ Image à la une des articles de WordPress.

Commandes_SQL_16

 Pour supprimer cette référence sur tous les articles, utiliser cette requête.

DELETE FROM wp_postmeta WHERE meta_key ='_thumbnail_id'

 Commandes_SQL_17

  •  Connaître la taille de sa base de données.

Voici une requête intéressante qui permet de récupérer la taille en MB de toutes les bases de données présentes sur votre compte.

SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS "Size (MB)" FROM information_schema.tables GROUP BY table_schema;

Commandes_SQL_19

Commandes_SQL_20

 

  •  Identifier puis supprimer des articles de plus de x jours.

Voici une occasion de faire un peu le ménage sur votre blog. Attention toute de même à avoir une sauvegarde de votre base de données avant d’effectuer cette manipulation.

SELECT * FROM `wp_posts` WHERE `post_type` = 'post' AND DATEDIFF(NOW(), `post_date`) > 730

Cette requête sélectionne les articles vieux de + de 2 ans. Ensuite vous pouvez les supprimer avec cette requête.

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

Commandes_SQL_22

Commandes_SQL_21

  • Ajouter un meta key ou champ personnalisé à tous vos articles.

Les champs personnalisés sont souvent utiles pour rajouter des images pour avoir des miniatures par exemple ou pour afficher le nombre de lecture d’un article, …

INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT ID AS post_id, 'Test' AS meta_key, 'Test' AS meta_value FROM wp_posts WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'Test') AND post_type = 'post';

Cette requête permet d’ajouter le champ personnalisé Test à tous les articles n’ayant pas ce champ. Si le champ est déjà présent dans l’article aucune mise à jour ou ajout n’est effectué dans l’article.

INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT ID AS post_id, 'Test' AS meta_key, 'Test' AS meta_value FROM wp_posts WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'Test') AND post_type = 'post'

Commandes_SQL_23

Comme vous pouvez le constater, le champ personnalisé Test a bien été rajouté à vos articles.

Commandes_SQL_24

Voilà un petit tutoriel qui va vous apprendre à manipuler les requêtes SQL sous WordPress. Le premier conseil que je peu vous donnez : EFFECTUER une sauvegarde avant d’effectuer vos requêtes. J’ai encore quelques requêtes bien gratinées à vous faire découvrir, mais se sera dans un autre tutoriel.

That’s All.

Vous avez aimé cet article ! Partager-le avec vos amis !

  

3 Potins

  1. Crunch 24 décembre 2012 at 17:00

    C’est parfait, merci bien pour le lien.

    Joyeuses fêtes au passage.

  2. Le Webmaster 24 décembre 2012 at 15:01

    Bonjour,

    merci pour ces encouragements. Voici un lien je pense qui va pouvoir d’aider pour renommer un champ personnalisé (custom field) : http://wordpress.stackexchange.com/questions/31178/how-to-rename-a-custom-field

    A bientôt et joyeux noël.

  3. Crunch 24 décembre 2012 at 14:55

    Merci pour ce tutoriel. je le garde sous le coude pour des prochaines modifications sur mes sites mais éventuellement si tu aurais une petite requête pour renommé le champ personnalisé « X » en « Y » sur tous les articles et pages tout en gardant le contenu, ça serait génial ;)

Laisser un potin