Я пытаюсь исключить общедоступные адреса электронной почты из представлений контактной формы 7 контактной формы. У меня есть следующий код, который отлично работает:
// Add custom validation for CF7 form fields
function is_company_email($email){ // Check against list of common public email providers & return true if the email provided *doesn't* match one of them
if(
preg_match('/@gmail.com/i', $email) ||
preg_match('/@hotmail.com/i', $email) ||
preg_match('/@live.com/i', $email) ||
preg_match('/@msn.com/i', $email) ||
preg_match('/@aol.com/i', $email) ||
preg_match('/@yahoo.com/i', $email) ||
preg_match('/@inbox.com/i', $email) ||
preg_match('/@gmx.com/i', $email) ||
preg_match('/@me.com/i', $email)
){
return false; // It's a publicly available email address
}else{
return true; // It's probably a company email address
}
}
function custom_email_validation_filter($result, $tag) {
$tag = new WPCF7_Shortcode( $tag );
if ( 'email-address' == $tag->name ) {
$the_value = isset( $_POST['email-address'] ) ? trim( $_POST['email-address'] ) : '';
if(!is_company_email($the_value)){
$result->invalidate( $tag, "Please Enter a valid Business Email address. Email domains like hotmail or yahoo are excluded." );
}
}
return $result;
}
add_filter( 'wpcf7_validate_email', 'custom_email_validation_filter', 10, 2 );
add_filter( 'wpcf7_validate_email*', 'custom_email_validation_filter', 10, 2 );
Однако я хотел бы сделать список адресов электронной почты для блокировки редактируемым в WP Admin. Я создал повторитель настраиваемых полей на странице параметров:
$exclusions = get_field('excluded_email_addresses','options');
Однако я не уверен, как пройти через этот повторитель, сохраняя при этом функциональность preg_match.
Я пытался включить цикл foreach, но думаю, что он возвращал несколько результатов.
Любая помощь будет высоко ценится.