Validate Phone Numbers in Contact Form 7
Checks Contact Form 7 phone fields for a realistic number of digits and only the characters phone numbers use, instead of accepting any text.
Opens WPIDE on
Code
$wpide_cf7_phone_min_digits = 7;
$wpide_cf7_phone_max_digits = 15;
$wpide_cf7_phone_check = function ( $result, $tag ) use ( $wpide_cf7_phone_min_digits, $wpide_cf7_phone_max_digits ) {
$phone = isset( $_POST[ $tag->name ] ) ? trim( (string) wp_unslash( $_POST[ $tag->name ] ) ) : '';
if ( '' === $phone ) {
return $result;
}
$digits = strlen( preg_replace( '/\D/', '', $phone ) );
if ( ! preg_match( '/^\+?[0-9\s().\-]+$/', $phone ) || $digits < $wpide_cf7_phone_min_digits || $digits > $wpide_cf7_phone_max_digits ) {
$result->invalidate( $tag, 'Please enter a valid phone number.' );
}
return $result;
};
add_filter( 'wpcf7_validate_tel', $wpide_cf7_phone_check, 20, 2 );
add_filter( 'wpcf7_validate_tel*', $wpide_cf7_phone_check, 20, 2 );
Notes
Adjust the minimum and maximum digit counts for your country; spaces, dashes, dots, brackets and a leading + are always allowed.
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.