Gestion des commentaires WordPress via des requêtes SQL

À partir du Tableau de bord de l’administration de WordPress on a la main sur la gestion des commentaires permettant de les valider ou de les effacer en bloc quand il s’agit de spams, mais aucune option n’est prévue pour un traitement plus fin qui permettrait par exemple d’effacer tous les commentaires compris entre deux dates, de désactiver tous les commentaires sur les billets antérieurs à une certaine date, etc.
Depuis des requêtes SQL à lancer avec phpMyAdmin, il est parfois nécessaire de passer par cet outil pour d’une part réaliser des actions impossibles à faire depuis l’administration de WordPress et d’autre part lancer des opérations de suppressions massives de commentaires qui immanquablement bloquent WordPress quand on les exécute depuis le tableau de bord (par exemple supprimer 100 000 commentaires de spam en une seule passe).
Avant d’exécuter une requête SQL sur une base de données WordPress (ou pour tout autre système), il est fortement conseillé et recommandé de réaliser une sauvegarde de cette base, car avec les requêtes SQL le droit à l’erreur n’existe pas, surtout quand on manipule la commande Delete qui va effacer des lignes dans une table.
Pour les requêtes indiquées ci-dessous, il faudra remplacer le préfixe des tables (par défaut wp_) par celui qui est effectivement utilisé dans votre base de données SQL.

wordpress-oeil

Effacer tous les commentaires en spam : Cette requête supprime d’un bloc tous les commentaires considérés comme étant du spam. Elle est particulièrement utile pour effacer une masse de commentaires rapidement sans passer par l’Administration de WordPress où une suppression massive aboutit à une erreur systématique.

DELETE from wp_comments WHERE comment_approved = 'spam'

Effacer tous les commentaires entre deux dates : Après avoir subi une attaque de spam pendant un certain laps de temps, il est utile de pouvoir supprimer tous les commentaires compris entre deux dates. Remplacer les deux dates (format américain) dans la requête par celles qui correspondent à votre situation.

DELETE FROM wp_comments 
WHERE comment_date > '2013-11-15 01:10:04'
AND comment_date <= '2013-11-20 00:10:04'

Effacer tous les commentaires en attente de validation : Si votre file d’attente de commentaires en attente de validation est constituée de 99 % de spam, il est sans doute préférable de tous les supprimer plutôt que de les passer en revue pour trouver ceux qui sont valides.

DELETE FROM wp_comments WHERE comment_approved = '0'

Désactiver tous les commentaires pour tous les articles : Plutôt que de passer en revue tous les articles pour cocher la case permettant de désactiver les commentaires, il est plus rapide de passer par une requête SQL. Le fait de désactiver les commentaires dans le tableau de bord de WordPress ne concerne que les nouvelles publications. Pour les anciens articles, les commentaires restent ouverts.

UPDATE wp_posts SET comment_status = 'closed', ping_status = 'closed' WHERE comment_status = 'open'

et pour l’opération inverse :

UPDATE wp_posts SET comment_status = 'open', ping_status = 'open'; WHERE comment_status = 'closed'

Désactiver les commentaires sur les anciens articles : Pour limiter le spam, il est recommandé de désactiver les commentaires sur les articles antérieurs à une certaine date.

UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2014-01-01' AND post_status = 'publish'

Effacer les commentaires qui contiennent une URL particulière : Même en faisant attention, on laisse parfois passer des commentaires affichant des URLs vers des sites douteux. La requête suivante les supprime ; remplacer « commentairespam » par le terme ou l’URL de votre choix, celui que contiennent les commentaires à effacer.

DELETE from wp_comments WHERE comment_author_url LIKE "%commentairespam%"

 Trouver et remplacer du texte dans les commentaires : Si vous voulez remplacer un mot ou une phrase se trouvant dans tous les commentaires, utiliser cette requête SQL.

UPDATE wp_comments SET `comment_content` = REPLACE (`comment_content`, 'TexteOriginal', 'TextRemplacement')

Activer les commentaires seulement pour les utilisateurs enregistrés : Pour faire diminuer significativement le nombre de spams dans les commentaires, il suffit de n’autoriser que les commentateurs enregistrés à pouvoir commenter. La requête SQL effectue ce réglage sur tous les articles publiés sur le blog.

UPDATE wp_posts SET comment_status = 'registered_only'

Source : Cats who code

4 réflexions au sujet de “Gestion des commentaires WordPress via des requêtes SQL”

  1. Bonjour,

    En modifiant le statut des commentaires.

    UPDATE wp_posts SET comment_status = ‘open’;

  2. Bonjour,
    SVP – comment annuler la commande « UPDATE wp_posts SET comment_status = ‘registered_only' »
    Cordialement.
    Merci.
    L

Les commentaires sont fermés.