Могу ли я подключиться к процессу приглашения пользователя, чтобы подтвердить, что его адрес электронной почты принадлежит определенному домену?
У меня есть опция сайта, где пользователи могут вводить домены для регистрации в "белом списке". Что я хотел бы сделать, так это подключиться к потоку приглашений/создания пользователей, чтобы убедиться, что домен нового пользователя с его адреса электронной почты соответствует одному из доменов в параметрах сайта.
Кто-нибудь знает, возможно ли это, или как это сделать?
Добавить уточнение: Для этого нужно будет посмотреть поле адреса электронной почты в процессе приглашения, и я предполагаю, что оно отключите все, кроме корневого домена. Затем проверьте, включен ли домен в массив из параметров блога. Так что, я думаю, начало было бы примерно таким?
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 answers
Можно подключиться к 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
;)