WordPress – Kommentare löschen per SQL, der schnelle Weg

Wenn man sein WordPressBlog mal ein paar Monate nicht angefasst hat bietet sich oft ein „Bild des Grauens“ in den Kommentaren. Wer dazu auch kein Akismet konfiguriert und aktiviert hat. Kann sich auf viele neue Einträge freuen.

Die kann man nun mühsam manuell im Adminbereich vom WordPress löschen oder man macht es gleich per SQL-Kommando.

Dazu loggen wir uns per Konsole oder phpMyAdmin in unsere MySQL-Datenbank für WordPress.

Die Kommentare werden in der Tabelle wp_comments gespeichert. Diese können wir uns mit den Befehl desc etwas näher beschreiben lassen in dem wir die Struktur anzeigen.

mysql> desc wp_comments;
+----------------------+---------------------+------+-----+---------------------+----------------+
| Field                | Type                | Null | Key | Default             | Extra          |
+----------------------+---------------------+------+-----+---------------------+----------------+
| comment_ID           | bigint(20) unsigned | NO   | PRI | NULL                | auto_increment |
| comment_post_ID      | bigint(20) unsigned | NO   | MUL | 0                   |                |
| comment_author       | tinytext            | NO   |     | NULL                |                |
| comment_author_email | varchar(100)        | NO   | MUL |                     |                |
| comment_author_url   | varchar(200)        | NO   |     |                     |                |
| comment_author_IP    | varchar(100)        | NO   |     |                     |                |
| comment_date         | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| comment_date_gmt     | datetime            | NO   | MUL | 0000-00-00 00:00:00 |                |
| comment_content      | text                | NO   |     | NULL                |                |
| comment_karma        | int(11)             | NO   |     | 0                   |                |
| comment_approved     | varchar(20)         | NO   | MUL | 1                   |                |
| comment_agent        | varchar(255)        | NO   |     |                     |                |
| comment_type         | varchar(20)         | NO   |     |                     |                |
| comment_parent       | bigint(20) unsigned | NO   | MUL | 0                   |                |
| user_id              | bigint(20) unsigned | NO   |     | 0                   |                |
+----------------------+---------------------+------+-----+---------------------+----------------+
15 rows in set (0.00 sec)

Alle Kommentare die noch nicht durch uns genemigt wurden haben eine 0 in der Spalte comment_approved

Wir können uns diese einmal anzeigen lassen.

mysql> select * from wp_comments where comment_approved = '0';

Je nachdem wie viele WordPress Kommentare sich angesammelt haben kann die Ausgabe recht umfangreich ausfallen. Wenn uns nur die Anzahl interessiert können wir diese so ermitteln.

mysql> select count(*) from wp_comments where comment_approved = '0';
+----------+
| count(*) |
+----------+
|    18321 |
+----------+
1 row in set (0.00 sec)

Die Ausgabe bedeutet, dass sich 18321 noch nicht freigegebene Kommentare in der Datenbank befinden.

Diese können wir nun ganz einfach löschen.

mysql> delete from wp_comments where comment_approved = '0';
Query OK, 18321 rows affected (0.01 sec)

Nun sind alle nicht freigegebenen Kommentare in WordPress gelöscht. Das Löschen der Kommentare könnte man nun noch etwas selektiver gestalten indem wir z.B. die Spalte comment_date berücksichtigen oder Kommentare von einer bestimmten IP löschen usw. Die Vielzahl der Möglichkeiten sind grenzenlos :-D.

Das manuelle Eingreifen in die Datenbank von WordPress ist nicht ohne Risiko! Ein Backup der Datenbank vor dem Eingriff ist empfehlenswert.

Es lohnt ein Blick in die Dokumentation von MySQL.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.