Блокировка регистрации определенных доменов в WooCommerce

Я пытаюсь сделать функцию в своем functions.php для блокировки определенных доменов от регистрации. Я знаю, что есть некоторые плагины, которые выполняют то же самое, но я просто не хочу устанавливать плагины, чтобы упростить процесс.

Я попробовал функцию ниже, но, кажется, не работает правильно. В этом примере я использовал gmail.com и yahoo.com, но есть некоторые известные домены, которые создают массовый спам.

add_action('woocommerce_register_post','is_invalid_registration_email_domain', 10, 3 );
function is_invalid_registration_email_domain( $username, $email, $validation_errors ){
$invalid_email_domains = array( 'gmail.com', 'yahoo.com' ); // Forbidden domains
$valid = false; // sets default validation to false
foreach( $invalid_email_domains as $d ){
$d_length = strlen( $d );
$current_email_domain = strtolower( substr( $email, -($d_length), $d_length));
if( $current_email_domain == strtolower($d) ){
$valid = true;
break;
}
}

// Return error message for invalid domains
if( ! $valid ){
$error_text = __( "<strong>ERROR</strong>: Registration is only allowed from selected approved domains. If you think you are seeing this in error, please contact the system administrator.", "woocommerce" );
$validation_errors->add( 'domain_whitelist_error', $error_text );
}
}

0

Решение

Я вижу, что часть вашего кода взята из этого ответа:

Ограничить регистрацию доменов в WooCommerce

Вместо того, чтобы использовать woocommerce_register_post Вы должны попробовать этот крючок:
woocommerce_register_form_start

И посмотри, сработает ли это.

0

Другие решения

Других решений пока нет …