我是否可以连接到邀请用户进程,以验证他们的电子邮件地址是否来自某个域?

时间:2013-01-23 作者:Jake Lisby

我有一个站点选项,用户可以在其中输入域以“白名单”注册。我想做的是挂接到邀请/创建用户流中,以验证新用户的电子邮件地址域是否与站点选项中的一个域匹配。

有人知道这是否可能,或者如何做到这一点吗?

添加说明:这需要查看邀请过程中的电子邮件地址字段,我假设除去根域之外的所有内容。然后验证该域是否包含在博客选项的数组中。所以我想它的开始应该是这样的?

function dwsl_whitelistreg() {
        $settings=get_option( \'school_settings\');
        if (in_array( ENTEREDEMAILADDRESS , $settings[whitelist])) {
            ACTION TO SUBMIT USER
        }
        else {
            echo "I\'m sorry the user\'s email address does not match a domain given by the school. If you feel this is an error, please email [email protected]";
        }
    }
    add_filter(\'wpmu_signup_user\', \'dwsl_whitelistreg\');

1 个回复
最合适的回答,由SO网友:brasofilo 整理而成

有可能钩住wpmu_validate_user_signup, 返回$result 注册过程的。为电子邮件域白名单添加另一项检查,如果不允许,则添加错误。

add_filter( \'wpmu_validate_user_signup\', \'whitelist_registration_wpse_82859\' );

function whitelist_registration_wpse_82859( $result )
{
    // Test array
    $whitelist = array( \'gmail.com\', \'mydomain.com\' );

    // http://php.net/manual/en/function.explode.php
    $user_name_domain = explode( \'@\', $result[\'user_email\'] );

    if( isset( $user_name_domain[1] ) && !in_array( $user_name_domain[1], $whitelist ) )
        $result[\'errors\']->add( \'user_email\',  __( \'Email domain blacklisted\' ) );

    return $result;
}
PS:假过滤器的好把戏wpmu_signup_user ;)

结束