When customer submits email via contact form 7, how do I check if email already exists in my database and change notification message to "Your email already exists in our database"
So far I have tried using before_send hook, but when I click submit, the page just hangs and no confirmation message.
Below is the function I have in my functions.php
add_action( 'wpcf7_before_send_mail', 'check_email' );
function check_email( $cf7 )
{
$email = $cf7->posted_data["email"];
if($email == 'Is in our database'){
echo ('Your email exists in our database');
}
}
Thanks for your help
I've added a filter on validation:
add_filter( 'wpcf7_validate', 'email_already_in_db', 10, 2 );
function email_already_in_db ( $result, $tags ) {
// retrieve the posted email
$form = WPCF7_Submission::get_instance();
$email = $form->get_posted_data('your-email');
// if already in database, invalidate
if( email_exists( $email ) ) // email_exists is a WP function
$result->invalidate('your-email', 'Your email exists in our database');
// return the filtered value
return $result;
}
In this case the email field is named your-email
.
The function email_exists
is a native WP function to handle this.