Есть Ли Способ Установить Роль Пользователя На Основе Домена Электронной Почты?

  • Автор темы Maratisafin
  • Обновлено
  • 20, Oct 2024
  • #1

Например, если пользователь зарегистрировался в домене электронной почты:

[email protected]

Они будут установлены в качестве вкладчиков.

но если какое-либо другое электронное письмо, например

[email protected]

они будут настроены как подписчики?

Спасибо!

#роли-пользователя #регистрация-пользователя #доступ-пользователя

Maratisafin


Рег
19 Mar, 2020

Тем
86

Постов
216

Баллов
676
  • 25, Oct 2024
  • #2

С помощью этого кода вы проверите во время регистрации электронную почту пользователей и прикрепите нужные роли:

 
 <?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 } } ?>
 

Hitz


Рег
28 Jun, 2010

Тем
70

Постов
201

Баллов
601
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно