Jeder kennt eine SQL-Abfrage oder ein WordPress-Plugin, das mir helfen kann, doppelte Kommentare zu entfernen.
Während ich Beiträge und Kommentare in WordPress importierte, kam es zu Zeitüberschreitungen und wiederholten Vorgängen, sodass einige Kommentare doppelt gepostet wurden.
Wenn Sie sich einige der Bilder des WordPress-Schemas ansehen, sollten Sie in der Lage sein, die Datensätze zu identifizieren, die Sie mit einer Abfrage wie löschen möchten
SELECT wp_comments.*
FROM wp_comments
LEFT JOIN (
SELECT MIN(comment_id) comment_id
FROM wp_comments
GROUP BY comment_post_id, comment_author, comment_content
) to_keep ON wp_comments.comment_id = to_keep.comment_id
WHERE to_keep.comment_id IS NULL
Sie sollten die obige Abfrage ausführen und sicherstellen, dass sie die richtigen Datensätze zurückgibt (diejenigen, die gelöscht werden). Wenn Sie zufrieden sind, funktioniert die Abfrage, und ändern Sie sie einfach von a SELECT
zu einem DELETE
DELETE wp_comments
FROM wp_comments
LEFT JOIN (
SELECT MIN(comment_id) comment_id
FROM wp_comments
GROUP BY comment_post_id, comment_author, comment_content
) to_keep ON wp_comments.comment_id = to_keep.comment_id
WHERE to_keep.comment_id IS NULL
Wow, das hat wie ein Zauber funktioniert, eine aggressivere Form, die ich schließlich verwendet habe, um alle doppelten Kommentare unabhängig von Autor oder Post-ID zu eliminieren, wird sein:
DELETE wp_comments
FROM wp_comments
LEFT JOIN (
SELECT MIN(comment_id) comment_id
FROM wp_comments
GROUP BY comment_content
) to_keep ON wp_comments.comment_id = to_keep.comment_id
WHERE to_keep.comment_id IS NULL
Dadurch werden nutzlose kurze Kommentare gelöscht, die wie eine Vorlage funktionieren, wie: “Danke”, “Großartig”….
Ich hatte dieses Problem kürzlich und schrieb schließlich dieses kleine Skript, um es zu handhaben. Das Schöne daran ist, dass Sie auch die korrekte Anzahl der Kommentare pro Beitrag erhalten. Wenn Sie nur die doppelten Kommentare löschen, ohne dies zu ändern, wird die Zählung deaktiviert.
# First select all comments
$query = "SELECT `comment_ID`, `comment_post_ID`, `comment_content` FROM ".$wpdb->comments." WHERE 1";
$comments = $wpdb->get_results($query);
# Array to hold keeper comment IDs so we dont delete them if there are doops
$keeper_comments = array();
# Now check if each comment has any matching comments from the same post
foreach ($comments as $comment) {
$query = "SELECT `comment_ID` FROM ".$wpdb->comments." WHERE `comment_ID` != ".$comment->comment_ID." AND `comment_post_ID` = ".$comment->comment_post_ID." AND `comment_content` = '".addslashes($comment->comment_content)."'";
$matching_comments = $wpdb->get_results($query);
if ($wpdb->num_rows > 0) {
foreach ($matching_comments as $matching_comment) {
if (!in_array($matching_comment->comment_ID, $keeper_comments)) {
$wpdb->query("DELETE FROM ".$wpdb->comments." WHERE `comment_ID` = ".$matching_comment->comment_ID);
$wpdb->query("UPDATE ".$wpdb->posts." SET `comment_count` = `comment_count` - 1 WHERE `comment_ID` = ".$matching_comment->comment_ID);
}
}
$keeper_comments[] = $comment->comment_ID;
}
}
Ich habe alle oben genannten Optionen ausprobiert. Grimmdude hat leider nicht funktioniert. Die von TI bereitgestellte Lösung löschte beide Kommentare, falls welche doppelt vorhanden waren. Ich wollte eines der Duplikate behalten. Mit ein wenig Hilfe von einem Freund hat dieses Skript den Zweck erfüllt.
Für alle, die die Richtung benötigen, sollte dies eine SQL-Abfrage sein, die auf der DB ausgeführt wird.
DELETE t1
FROM wp_comments t1
INNER JOIN wp_comments t2
WHERE t1.COMMENT_ID < t2.COMMENT_ID AND t1.comment_content = t2.comment_content;
14350600cookie-checkDoppelte Kommentare in WordPress entfernen?yes