我有一个站点选项,用户可以在其中输入域以“白名单”注册。我想做的是挂接到邀请/创建用户流中,以验证新用户的电子邮件地址域是否与站点选项中的一个域匹配。
有人知道这是否可能,或者如何做到这一点吗?
添加说明:这需要查看邀请过程中的电子邮件地址字段,我假设除去根域之外的所有内容。然后验证该域是否包含在博客选项的数组中。所以我想它的开始应该是这样的?
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\');
最合适的回答,由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
;)