Sie müssen 1000 Spam-Kommentare in einem Datenbereich entfernen, ohne legale Kommentare zu entfernen
Leider bietet WordPress keine functionen zur Auswahl von Kommentaren nach Datumsbereich, soweit ich weiß. Und obwohl Sie wp_delete_comment
in einer Schleife wp_delete_comment
könnten, würde es unnötig lange dauern.
Wie das Beziehungsdiagramm der WordPress-database zeigt , können Kommentare nur in der Tabelle wp_comments
und der Tabelle wp_commentmeta
.
Verwenden Sie den MySQL-Befehlszeilenclient oder phpMyAdmin, um Abfragen direkt auszuführen. Wenn du:
SELECT * FROM `wp_comments` LIMIT 1
… sehen Sie die Struktur der Kommentardaten. comment_date
und comment_date_gmt
sind die Felder, mit denen Sie BETWEEN
spielen werden. comment_date
ist das Datum der Versetzung des Kommentars um die Zeitzoneneinstellung, die Sie unter Einstellungen / Allgemein festgelegt haben. comment_date_gmt
ist die UTC + 0 Zeit, die universelle Wahrheit.
SELECT * FROM `wp_comments` WHERE `comment_date` BETWEEN '2010-01-15 00:00:00' AND '2012-01-15 00:00:00';
Kein Erklärungsbedarf. Sobald Sie Ihre database gesichert haben (ich meine es wirklich, sichern Sie es, bitte können die Dinge schief gehen), sind Sie frei zu:
DELETE FROM `wp_comments` WHERE `comment_date` BETWEEN '2010-01-15 00:00:00' AND '2012-01-15 00:00:00';
Jetzt, wie uns die databasestruktur zeigt, werden wir in der Tabelle wp_commentmeta
Metadaten wp_commentmeta
.
SELECT * FROM `wp_commentmeta` WHERE `comment_ID` NOT IN (SELECT `comment_ID` FROM `wp_comments`);
Eine Unterabfrage wird sich darum kümmern. Sobald Sie sich wohl fühlen, ersetzen Sie SELECT *
für DELETE FROM
.
Um solche Bereinigungen zu planen, wie “alle Kommentare löschen, die älter als ein Jahr sind”, würden Sie diese Abfragen mit verschiedenen wp_schedule_event
von wp_schedule_event
und der wpdb
class zusammenführen, um Abfragen wpdb
. Um das Datum zu erstellen, würden Sie die Datumsfunktionen von WordPress verwenden.