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

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

Когда новый пользователь создается через функцию wp_insert_user()
, его роль устанавливается методом set_role()
класса User
и по умолчанию соответствует стандартной роли пользователя.
Стандартная роль пользователя извлекается из базы данных с помощью get_option('default_role')
и может быть изменена в панели администратора, перейдя в Настройки > Общие > Роль нового пользователя по умолчанию.
Если вы зарегистрировали новую роль (используя add_role()
), она должна быть доступна для выбора в этом разделе.
В качестве альтернативы, для большего контроля вы можете подключиться к действиям user_register
или profile_update
, чтобы затем установить роль (set_role
) условно или любым другим удобным для вас способом.

После того как вы создали пользователя с помощью
$user_id = wp_create_user( $user_login, $pas1, $user_email );
Создайте объект пользователя
$user = new WP_User($user_id);
Затем установите роль
$user->set_role('editor');
Вы можете заменить роль 'editor' на любую из следующих:
Администратор
Редактор
Автор
Участник
Подписчик
