Как программно установить роль по умолчанию для новых пользователей?

22 окт. 2011 г., 11:22:15
Просмотры: 34.6K
Голосов: 15

Я хотел бы, чтобы новые пользователи блога имели пользовательскую роль вместо роли Подписчик. Как установить это программно? Я знаю, что это можно изменить через панель администратора.

0
Все ответы на вопрос 4
0
18

Это позволяет плагинам легко переопределять стандартную роль, пока они активны.

// Перехватываем опцию, роль будет следовать заданному значению!
add_filter('pre_option_default_role', function($default_role){
    // Здесь также можно добавить условные проверки и возвращать любое значение
    return 'subscriber'; // Это изменяет роль
    return $default_role; // Это оставляет значение по умолчанию
});

Я использую это, чтобы гарантировать, что некоторым плагинам, которым нужна роль подписчика, она будет назначена, несмотря на попытки администратора изменить её :)

С уважением.

22 окт. 2011 г. 15:48:39
2

Когда новый пользователь создается через функцию wp_insert_user(), его роль устанавливается методом set_role() класса User и по умолчанию соответствует стандартной роли пользователя.

Стандартная роль пользователя извлекается из базы данных с помощью get_option('default_role') и может быть изменена в панели администратора, перейдя в Настройки > Общие > Роль нового пользователя по умолчанию.

Если вы зарегистрировали новую роль (используя add_role()), она должна быть доступна для выбора в этом разделе.

В качестве альтернативы, для большего контроля вы можете подключиться к действиям user_register или profile_update, чтобы затем установить роль (set_role) условно или любым другим удобным для вас способом.

22 окт. 2011 г. 11:34:52
Комментарии

Я отмечу ваш ответ как правильный, хотя реальный ответ оказался таким простым, как update_option('default_role', 'custom_role_name') при активации плагина.

jayarjo jayarjo
22 окт. 2011 г. 12:05:31

Рад, что смог помочь.

soulseekah soulseekah
22 окт. 2011 г. 12:09:53
1

После того как вы создали пользователя с помощью

$user_id = wp_create_user( $user_login, $pas1, $user_email );

Создайте объект пользователя

$user = new WP_User($user_id);

Затем установите роль

$user->set_role('editor');

Вы можете заменить роль 'editor' на любую из следующих:

  • Администратор

  • Редактор

  • Автор

  • Участник

  • Подписчик

22 окт. 2011 г. 11:27:25
Комментарии

убедитесь, что роль указана в нижнем регистре: author, editor, administrator, contributor, subscriber

Tamik Soziev Tamik Soziev
20 янв. 2021 г. 05:17:35
2

Добавьте это в файл functions.php вашей темы или в плагин

//Установить роль 'client' по умолчанию

update_option('default_role','client');
16 сент. 2015 г. 22:41:48
Комментарии

Зачем?? Бессмысленно размещать код, не понимая, что он делает и как работает

Pieter Goosen Pieter Goosen
16 сент. 2015 г. 22:58:14

Это не лучшее решение. Такой запрос на обновление будет выполняться при каждом запросе, если не поместить его в специальное действие.

Maciej Paprocki Maciej Paprocki
2 апр. 2018 г. 22:33:59