最后,我找到了解决方案。如果有人有相同的问题并希望参考,请参阅下面的代码。
使用操作
function wf_validate_email_domain()
{
global $bp;
$email = $bp->signup->email;
$email_exploded = explode(\'@\', $email);
// split on @ and return last value of array (the domain)
$domain = array_pop($email_exploded);
$email_domains = get_option(\'allowed_email_domains\');
$allowed_email_domains = array_map(\'trim\', explode(\',\', $email_domains));
if ( ! in_array($domain, $allowed_email_domains)) {
$bp->signup->errors[ \'signup_email\' ] = __(\'You cannot register using this email\', \'workfront\');
}
}
add_action(\'bp_signup_validate\', \'wf_validate_email_domain\');
我还找到了一个使用与我的问题相同的过滤器的解决方案。答案由
@Damocles 这是
original answer link. 然而,为了方便起见,我在这里粘贴代码。
使用筛选器
function wf_validate_email_domain($result)
{
$email = $result[ \'user_email\' ];
// make sure we\'ve got a valid email
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// split on @ and return last value of array (the domain)
$domain = array_pop(explode(\'@\', $email));
$email_domains = get_option(\'allowed_email_domains\');
$allowed_email_domains = array_map(\'trim\', explode(\',\', $email_domains));
if ( ! in_array($domain, $allowed_email_domains)) {
$result[ \'errors\' ]->add(\'user_email\', __(\'You cannot register using this email\', \'workfront\'));
}
}
return $result;
}
add_filter(\'bp_core_validate_user_signup\', \'wf_validate_email_domain\');