Block Contact Form 7 Messages Containing Spam Words
Marks Contact Form 7 submissions as spam when any field contains a word or phrase from your block list, such as SEO offers or crypto pitches.
Opens WPIDE on
Code
// Words and phrases that mark a submission as spam.
$wpide_cf7_blocked_words = array( 'seo services', 'backlinks', 'crypto', 'casino', 'guest post', 'rank your website', 'viagra' );
add_filter( 'wpcf7_spam', function ( $spam, $submission = null ) use ( $wpide_cf7_blocked_words ) {
if ( $spam || ! $submission || ! $wpide_cf7_blocked_words ) {
return $spam;
}
$text = '';
foreach ( (array) $submission->get_posted_data() as $value ) {
$text .= ' ' . ( is_array( $value ) ? implode( ' ', $value ) : (string) $value );
}
foreach ( $wpide_cf7_blocked_words as $word ) {
if ( preg_match( '/\b' . preg_quote( $word, '/' ) . '\b/iu', $text ) ) {
$submission->add_spam_log( array( 'agent' => 'wpide-blocked-words', 'reason' => sprintf( 'Contains "%s".', $word ) ) );
return true;
}
}
return false;
}, 10, 2 );
Notes
Matching is case-insensitive on whole words; add phrases you keep receiving to the list.
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.