任何人都知道sql查詢或wordpress插件,這可能會幫助我刪除重複的評論。刪除WordPress中的重複評論?
雖然我導入帖子,評論到wordpress,我有一些超時,並重復的過程,所以一些評論發佈兩次。
任何人都知道sql查詢或wordpress插件,這可能會幫助我刪除重複的評論。刪除WordPress中的重複評論?
雖然我導入帖子,評論到wordpress,我有一些超時,並重復的過程,所以一些評論發佈兩次。
考慮看看一些WordPress的模式的圖像,那麼你應該能夠確定要刪除與查詢的記錄,如
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
您應該運行上面的查詢,並確保您將返回正確的記錄(將被刪除的記錄)。當你滿意的查詢工作,然後簡單地把它從SELECT
更改爲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
最近我有這個問題,最後寫這個腳本來處理它。這樣做的好處是它還會爲每個帖子留下正確的評論數量。如果您只刪除重複的評論而不更改此項,則計數將關閉。
# 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;
}
}
謝謝。以後再試,我現在遇到了更大的問題。 – Mezelderz