Spam Comments Copied Across Several Posts
Sends a comment to spam when exactly the same text was already posted on another post in the last day, a typical sign of a spam bot working through your site.
Opens WPIDE on
Code
add_filter( 'pre_comment_approved', function ( $approved, $commentdata ) {
global $wpdb;
if ( 'spam' === $approved || is_user_logged_in() || empty( $commentdata['comment_content'] ) || strlen( trim( $commentdata['comment_content'] ) ) < 30 ) {
return $approved;
}
$found = $wpdb->get_var( $wpdb->prepare(
"SELECT comment_ID FROM {$wpdb->comments} WHERE comment_date_gmt > %s AND comment_post_ID <> %d AND comment_content = %s LIMIT 1",
gmdate( 'Y-m-d H:i:s', time() - DAY_IN_SECONDS ),
(int) $commentdata['comment_post_ID'],
$commentdata['comment_content']
) );
return $found ? 'spam' : $approved;
}, 20, 2 );
Notes
Short comments under 30 characters (like "Thanks!") are ignored so genuine readers are not caught.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.