2

重複したコメントを削除するのに役立つかもしれないSQLクエリまたはワードプレスプラグインを知っている人は誰でも。

投稿、コメントをワードプレスにインポートしているときに、タイムアウトが発生し、プロセスが繰り返されたため、コメントの一部が2回投稿されました。

4

4 に答える 4

0

私は最近この問題を抱えており、それを処理するためにこの小さなスクリプトを書くことになりました。これの良いところは、投稿ごとに正しいコメント数が表示されることです。これを変更せずに重複したコメントのみを削除すると、カウントがオフになります。

# 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;
    }
}
于 2013-12-16T04:01:33.677 に答える