-
WORDPRESS > commandes SQL de maintenance
Supprimer les commentaires indésirables :
DELETE FROM wp_comments WHERE comment_approved="spam"Supprimer les commentaires “En attente” :
DELETE FROM wp_comments WHERE comment_approved="0″Supprimer les sauvegardes automatiques :
DELETE FROM wp_posts WHERE post_type="revision"Supprimer les brouillons :
DELETE FROM wp_posts WHERE post_status="draft"Si on n’utilise pas la médiathèque, supprimer les attachements :
DELETE FROM wp_posts WHERE post_type="attachment"Supprimer tous les articles :
DELETE * FROM wp_posts WHERE post_type="post"Supprimer toutes les pages :
DELETE * FROM wp_posts WHERE post_type="page"SUPPRIMER 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';
Purger les SPAM des commentaires
DELETE FROM wp_comments WHERE comment_approved = 'spam';
Pour supprimer tous les commentaires en attentes de modération : remplacer ‘spam’ par ‘0’. (si grosse attaque)
Supprimer tous les commentaires publiés : remplacer ‘spam’ par ‘1’.
Purger les données meta de commentaires supprimés
DELETE FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments )
Supprimer les entrées liées à Akismet
En supprimant ces données et particulièrement ceux liées à des spams qui ont été supprimés, il est possible d’économiser plusieurs Mo de données peu utiles.
DELETE FROM `wp_commentmeta` WHERE `meta_key` LIKE '%akismet%'
Purger les données meta des articles qui n’existent plus
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL
Supprimer tous les pingbacks
DELETE FROM wp_comments WHERE comment_type = 'pingback';
Supprimer un shortcode dans le contenu d’un article
UPDATE wp_post SET post_content = REPLACE(post_content, '[vieux_shortcode]', '' );
Supprimer un champ personnalisé
DELETE FROM wp_postmeta WHERE meta_key = 'meta_a_supprimer';
Supprimer les mots-clés (tag) non-utilisé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 );
Purger le cache des flux
Par défaut WordPress enregistre un cache des flux (RSS, ATOM …). Pour purger ce cache et libérer un grand nombre d’enregistrement de la table wp_options :
DELETE FROM wp_options WHERE option_name LIKE ('_transient%_feed_%') DELETE FROM wp_options WHERE option_name LIKE ('%_transient%_feed_%')
Supprimer les vieux articles
Pour certains type de blog évènementiel, il convient de supprimer du contenu dépassé. Même si ce n’est pas recommandé en terme de référencement sur Google, il est possible de supprimer tous les vieux articles, vieux d’il y a plus de 365 jours (à adapter) grâce à cette requête:
DELETE FROM wp_posts WHERE post_type = 'post' AND DATEDIFF(NOW(), `post_date`) > 365
Il est aussi possible de supprimer les articles à partir d’une date, plutôt qu’à partir d’un nombre de jours. Pour cela, il faut privilégier cette requête:
DELETE FROM wp_posts WHERE post_type = 'post' AND post_date < '2010-12-31 23:59:59'
Supprimer l’information du « user agent » de chaque commentaire
UPDATE wp_comments SET 'comment_agent' = '';
Nettoyer la table wp_posts
supprimer les publications inutiles (brouillons, posts orphelins, spams, révisions, etc.) :
DELETE FROM wp_posts WHERE post_status = 'trash'; -- poubelle DELETE FROM wp_posts WHERE post_status = 'draft'; -- brouillons
Supprimer les révisions (gardez les 3 dernières par post si nécessaire) :
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_parent IN (SELECT ID FROM wp_posts WHERE post_type = 'post');
Supprimer les posts orphelins
DELETE FROM wp_posts WHERE post_type = 'post' AND ID NOT IN (SELECT post_id FROM wp_postmeta);
Nettoyer les métadonnées associées
Pour éviter les entrées fantômes dans wp_postmeta :
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);
Optimiser la table (libérer l’espace)
Après les suppressions, exécutez :
OPTIMIZE TABLE wp_posts, wp_postmeta;
⚠️ Les révisions peuvent être utiles pour revenir en arrière.
Exemple complet pour supprimer 1000 révisions anciennes
DELETE FROM wp_posts WHERE post_type = 'revision' ORDER BY post_date ASC LIMIT 1000;
Résultat
Posts orphelins (sans métadonnées) :
SELECT * FROM wp_posts WHERE post_type = 'post' AND ID NOT IN (SELECT post_id FROM wp_postmeta);
Voili, voilou !