С помощью этого кода вы проверите во время регистрации электронную почту пользователей и прикрепите нужные роли:
<?php
if( ! in_array( $domain, $contributor_domains ) ){
foreach( $user->roles as $role )
$user->remove_role( $role ); //Remove existing Roles
$user->add_role( 'subscriber' ); //Add role
}
?>
Если вы хотите, чтобы все остальные домены электронной почты были подписчиками, вы можете просто зайти в «Администратор» > «Настройки» и объявить обычную роль «Подписчик». Или вы можете использовать это вместо $subscriber_domains
-part:
<?php
add_action( 'user_register', 'wp234_set_role_by_email' );
function wp234_set_role_by_email( $user_id ){
$user = get_user_by( 'id', $user_id );
$domain = substr(
strrchr(
$user->data->user_email,
"@"
), 1
); //Get Domain
$contributor_domains = array( 'gmail.com' );
if( in_array( $domain, $contributor_domains ) ){
foreach( $user->roles as $role )
$user->remove_role( $role ); //Remove existing Roles
$user->add_role( 'contributor' ); //Add role
}
$subscriber_domains = array( 'hotmail.com' );
if( in_array( $domain, $subscriber_domains ) ){
foreach( $user->roles as $role )
$user->remove_role( $role ); //Remove existing Roles
$user->add_role( 'subscriber' ); //Add role
}
}
?>