Minimum Message Length in Contact Form 7
Requires message fields to contain a few real words, which stops one-word and empty-looking submissions and gives you enough detail to reply.
Opens WPIDE on
Code
$wpide_cf7_min_words = 5; // Minimum number of words in textarea fields.
$wpide_cf7_words_check = function ( $result, $tag ) use ( $wpide_cf7_min_words ) {
$text = isset( $_POST[ $tag->name ] ) ? trim( wp_strip_all_tags( (string) wp_unslash( $_POST[ $tag->name ] ) ) ) : '';
if ( '' === $text && ! $tag->is_required() ) {
return $result;
}
$words = preg_match_all( '/[\p{L}\p{N}\']+/u', $text );
if ( $words < $wpide_cf7_min_words ) {
$result->invalidate( $tag, sprintf( 'Please write at least %d words so we can help you.', $wpide_cf7_min_words ) );
}
return $result;
};
add_filter( 'wpcf7_validate_textarea', $wpide_cf7_words_check, 20, 2 );
add_filter( 'wpcf7_validate_textarea*', $wpide_cf7_words_check, 20, 2 );
Notes
CF7 also has a minlength: option per tag; this snippet sets a site-wide minimum in words instead of characters.
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.