WordPress est (re)devenu à mes yeux un outil (presque) génial. Autant ces dernières années le constat n’était pas le même : lourd, chiant à mettre à jour, plein de trous de sécurité …

Mais aujourd’hui, le CMS phare des Internets redevient sage. Enfin, presque sage.

Il reste encore des failles énormes, dont la plus grande étant les plugins. L’autre grande étant les thèmes « freemium ». Vous savez, c’est ce qu’on fait à chaque fois : on ajoute des choses qui alourdissent et fragilisent un écosystème.

Bref, histoire de reprendre la main sur le contenu et optimiser un peu notre WordPress, il se peut que parfois on soit obligés de passer par la case MySQL.

Sauf que tout se passe alors grâce aux requêtes que l’on va exécuter.  Voici une liste de celles que je vous conseiller de garder sous le coude.

Lien vers l’article d’origine : https://kxrz.github.io/blog/sql-queries-wordpress/

Faites bien une sauvegarde avant de lancer ces requêtes, agissez en adultes responsables, je ne pourrais rien pour vous si vous faites des bêtises. Votre base de données est le cœur de votre blog. Faites attention à ce que vous faites !

Mettre à jour les liens de vos images quand vous changez de CDN (Content Delivery Network)

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘src= »https://www.old-url.com’, ‘src= »https://the-cdn.new-url.com’);

Suivi de :

UPDATE wp_posts SET guid = REPLACE (guid, ‘http://www.old-url.com’, ‘http://the-cdn.new-url.com’) WHERE post_type = ‘attachment’;

Mettre à jour le mot de passe d’un utilisateur

UPDATE wp_users SET user_pass = MD5( ‘new_password’ ) WHERE user_login = ‘the-username’;

Assigner les articles de l’auteur A à l’auteur B

UPDATE wp_posts SET post_author = ‘new-author-ID’ WHERE post_author = ‘old-author-ID’;

Supprimer les versions / révisions des articles de blog

Petite explication : à chaque sauvegarde d’un article, WordPress en fait une copie. Vous avez pour un même article plusieurs versions accessibles. Histoire de repartir en arrière en cas de souci. Le truc, c’est que de tout garder ne sert pas forcément à grand chose …

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’

Récupérer l’ensemble des emails des personnes qui ont laissées un commentaire

SELECT DISTINCT comment_author_email FROM wp_comments;

Supprimer les pingbacks (aka rétroliens)

DELETE FROM wp_comments WHERE comment_type = ‘pingback’;

Désactiver les commentaires sur les articles anciens

UPDATE wp_posts SET comment_status = ‘closed’ WHERE post_date < ‘2012-01-01’

Vous rencontrez des soucis d’encodage de caractères ?

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, ‘…’, ‘…’);

Désactiver vos plugins

UPDATE wp_options SET option_value =  » WHERE option_name = ‘active_plugins’;

Remplacer rapidement du contenu dans l’ensemble de vos articles

UPDATE wp_posts SET ‘post_content’ = REPLACE (‘post_content’, ‘Old Content’, ‘New Content’);