仅允许某些电子邮件创建帐户

时间:2019-03-17 作者:Afonso de Sousa

我正在创建一个网站,需要only allow some specific email addresses to signup .

例如,允许所有电子邮件以“结尾”@uniname.ac.uk“但不允许任何”@gmail.com, @hotmail.com, etc...“。

你们知道any WordPress email confirmation pluginsphp code 那会允许我这么做吗?

最后,我真的不知道如何编写php代码,所以如果有人能提供帮助,这将非常有用。

非常感谢。

2 个回复
SO网友:Frank P. Walentynowicz

要求

在设置->常规中,必须选中任何人都可以注册的框。在注册表的“电子邮件”字段中输入的电子邮件地址必须具有等于“uniname”的电子邮件域。ac.uk

电子邮件地址验证要验证电子邮件地址,我们可以使用“registration\\u errors”(注册错误)过滤器挂钩。

代码

在函数中插入以下代码。活动主题(子主题,如果存在)的php:

function wpse_check_email_domain($errors, $sanitized_user_login, $user_email) {
    $start = strpos(strtolower($user_email), \'@uniname.ac.uk\');
    if(!$start)
        $errors->add(\'ERROR\', \'Only users with "@uniname.ac.uk" email domain can register!\');
    return $errors;
}
add_filter(\'registration_errors\', \'wpse_check_email_domain\', 10, 3);
将其作为必用插件使用上述代码与主题无关。在函数中使用它。php,仅用于测试。测试后,将其从功能中删除。创建一个php脚本(例如domain check.php),将代码放入其中(不要忘记<?php 作为第一行),并将此脚本保存在“wp-content/mu-plugins”文件夹中。

解释

提交注册表后,将触发挂钩“registration\\u errors”。将执行回调函数“wpse\\u check\\u email\\u domain”,如果email domain不正确,将返回错误。错误消息将出现在注册表上。如果没有错误,注册过程将继续。

SO网友:Tanmay Patel

只是copy the above code and paste it into your theme’s functions.php file. 在这里,我将向您展示will reject registration from all others domain\'s email addressesOnly allowing @uniname.ac.uk email addresses to create an account. 请参见下面的代码

function is_valid_email_domain($login, $email, $errors ){
    $valid_email_domain = array("uniname.ac.uk");
    $valid = false;
    foreach( $valid_email_domain 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;
        }
    }
    if( $valid === false ){
        $errors->add(\'domain_whitelist_error\',__( \'<strong>ERROR</strong>: you can only register using @uniname.ac.uk emails\' ));
    }
}
add_action(\'register_post\', \'is_valid_email_domain\',10,3 );