我正在尝试在我的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 :(得分:0)
我可以看到您的部分代码来自以下答案:
Limit Domain Registration on WooCommerce
您应该尝试使用以下挂钩,而不是使用woocommerce_register_post
:
woocommerce_register_form_start
看看是否可行。