Как добавить новую роль пользователя в WordPress

Права пользователей на сайте играют довольно важную роль, особенно если над ним работает целый круг людей, начиная от редактора и заканчивая главным администратором. Каждый из них имеет свои обязательства и права доступа. Понятно, что владельцу сайта будет более рационально выдать каждому из них лишь необходимые полномочия. Это в первую очередь нужно для безопасности всего сайта, так как каждый пользователь будет иметь доступ только к необходимым ему для работы функциям (например, редактор может править записи, а администратор — устанавливать плагины). Такого разграничения можно добится как стандартными средствами WordPress, так и воспользовавшись специальными плагинами, расширяющими эти возможности.

Какие бывают роли пользователей в WordPress?

Подробно расписывать по умолчанию доступные в “движке” роли не будем, так как это было сделано в одной из прошлых статей. Напомним лишь, что в WordPress существует 5 стандартных типов пользователей:

  • подписчик,
  • участник,
  • автор,
  • редактор,
  • администратор.

Зачем создавать новые роли пользователей?

В принципе, стандартных ролей вполне будет достаточно для самых разных целей. Но иногда бывает необходимо выйти за рамки этих 5 ролей и создать более подходящую для собственных нужд. Например, нужно доработать какой-либо плагин. В этом случае целесообразно открыть доступ программисту лишь для конкретного плагина, не давая ему возможности устанавливать, редактировать или удалять все остальные.

Как в WordPress добавить новую роль пользователя?

Для решения задачи существует несколько способов. Рассмотрим наиболее популярные из них.

Способ 1. Плагин WPFront User Role Editor

Наиболее простым для пользователя является использование бесплатного плагина WPFront User Role Editor, который предоставляет для этого широкие возможности и понятный интерфейс.

Для создания новой роли следует, после установки и активации плагина, перейти в админ-раздел Roles -> Add new.

Страница настройки плагина WPFront User Role Editor

Во-первых, необходимо задать отображаемое имя новой роли (поле Display Name) и ее уникальный ярлык (Role Name).

Создание новой пользовательской роли

Дальше, в большом блоке Capabilities, следует отметить нужные права для пользователей создаваемой роли. Видно, что они удобно разделены в соответствии со структурой WordPress-сайта. Кратко опишем каждый раздел.

  • Dashboard – доступ к админ-панели.
  • Posts – управление записями (чтение, редактирование, удаление, публикация).
  • Media – работа с медиафайлами (загрузка, редактирование, удаление, прикрепление к публикациям).
  • Pages – работа со страницами.
  • Comments – управление комментариями (редактирование, модерирование).
  • Themes – работа с WordPress-темами (переключение, обновление, редактирование файлов тем, удаление и установка).
  • Plugins – управление плагинами.
  • Users – работа с пользователями и их ролями (создание, удаление, редактирование прав, изменение их ролей).
  • Tools – возможность импорта/экспорта.
  • Admin – администраторские права (доступ к обслуживанию сайта).
  • Roles – управление пользовательскими ролями.
  • Other Capabilities – другие права, не вошедшие в вышеуказанные категории (например, для отдельных плагинов).

После того, как все права были отмечены, нужно нажать кнопку Add New Role, после чего перед вами будет выведен список всех зарегистрированных на сайте ролей.

Список ролей

Созданную роль можно редактировать. Для этого просто необходимо на нее навести курсор и выбрать Edit.

Редактирование роли

Отметим, что плагин позволяет создать неограниченное число ролей.

Способ 2. Вручную

Существует еще один способ создания новой пользовательской роли. Он предусматривает использование специальных инструментов WordPress на языке программирования PHP.

Отметим, что весь последующий код будет располагаться в специальном файле functions.php вашей активной WordPress-темы.

Если Вы не знаете, как редактировать functions.php, то в этом случае Вам поможет плагин ProFunctions.

В качестве примера создадим роль, в которой пользователи будут иметь права:

  • редактировать темы;
  • добавлять/удалять плагины;
  • устанавливать новые версии “движка”.

Для начала добавим следующий код:

$result = add_role( 'wpschool_custom_admin', __(
'WPSchool Custom Admin' ),
array( ) );

Тут переменная $result будет содержать массив со всеми правами. add_role() – специальная функция WordPress, с помощью которой собственно и будет создана новая пользовательская роль. Значение ‘wpschool_custom_admin’ – это уникальный идентификатор новой роли, а ‘WPSchool Custom Admin’ – ее отображаемое имя.

Теперь добавим соответствующие роли:

'edit_themes' => true, // редактирование тем
'install_plugins' => true, // установка плагинов
'update_plugin' => true, // обновление плагинов
'update_core' => true // обновление ядра WordPress

Полный исходный код:

$result = add_role( 'wpschool_custom_admin', __(
'WPSchool Custom Admin' ),
array(

    'edit_themes' => true, // редактирование тем
    'install_plugins' => true, // установка плагинов
    'update_plugin' => true, // обновление плагинов
    'update_core' => true // обновление ядра WordPress

)
);

Весь список ролей и прав для сайта WordPress можно посмотреть на официальном сайте.

Созданную роль можно будет выбрать при создании (или редактировании уже существующего) пользователя.

Создание нового пользователя

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

Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров
Привет! Меня зовут Михаил Петров. Я копирайтер и занимаюсь этим с 2013 года. Скрупулезность и ответственность - моя фишка! Не могу делать как попало и добиваюсь, чтоб заказчик сказал минимум “неплохо”. За все время своей работы пришлось написать и отредактировать немало разной “текстовухи”, включая SEO-тексты, отзывы и прочую чушь. На сегодняшний день специализируюсь на написании информационных статей и руководств технического направления. Вижу смысл и светлое будущее в текстах для людей, а не для машин.
Обсуждение: 5
  1. Антон

    Я жду уже час

  2. Серж

    Здравствуйте. Подскажите как можно кодом добавить возможность определенному пользователю редактировать определенную рубрику или несколько назначенных ему одному Рубрик (Категорий). Спасибо…

  3. jopa

    Вы код проверяете который пишите ?

    1. Михаил Петров author

      Добрый день!

      Пожалуйста, укажите на опечатку. Исправим.

      С уважением Михаил

  4. Роман

    Выручайте!! Подскажите как кодом добавить пользувателю при покупке товара на сайте вторую роль??
    у меня есть код который добавляет пользувателю роль при покупке определенного товара, проблема в том что нужно несколько товаров с ролями и роли должны добавляться!
    Тоесть при покупке второго товара у него будет две роли, а сейчас у меня получается вторая роль сменяет первую(

    вот код:
    add_action(‘woocommerce_thankyou’, ‘change_user_role_on_order_success’);
    function change_user_role_on_order_success($order_id ) {
    $order = new WC_Order( $order_id );
    $user_id = $order->user_id;
    $wp_user_object = new WP_User($user_id);
    $items = $order->get_items();
    foreach ( $items as $item ) {
    $product_name = $item[‘name’];
    $product_id = $item[‘product_id’];
    $product_variation_id = $item[‘variation_id’];
    }
    if ( $product_id == ‘245’ && $wp_user_object->roles[0] != “administrator”){ // Не исправлять админа!
    wp_update_user( array( ‘ID’ => $wp_user_object->ID, ‘role’ => “pms_subscription_plan_252” ) );
    } else
    if ( $product_id == ‘933’ && $wp_user_object->roles[0] != “administrator”){ // Не исправлять админа!
    wp_update_user( array( ‘ID’ => $wp_user_object->ID, ‘new_user_roles’ => “pms_subscription_plan_1071” ) );
    }
    }

Задать вопрос