На самом деле, у пользователей WordPress может быть большое количество ролей, но этот момент часто упускается из виду. И очень зря. Ведь если у каждого пользователя будет доступ к определенному разделу, то это сократит до минимума вероятность любой неполадки, которая может навредить сайту.
В этом руководстве мы вкратце рассмотрим типы ролей пользователей WordPress и узнаем, как создать собственную кастомную роль.
Смотрите также:
К слову, кастомные роли играли важную роль еще с появлением версии WordPress 2.0. Но многие владельцы сайтов, даже не подозревая о них, предоставляли админские права каждому пользователю, который имел доступ к каждому разделу, записи и странице.
На WordPress существует 6 основных ролей пользователей:
- Администратор: имеет доступ ко всем административным параметрам и настройкам внутри сайта.
- Редактор: пользователь, который имеет право публиковать, редактировать записи всех пользователей, включая собственные.
- Автор: может публиковать и управлять только собственными записями.
- Участник: автор, который может писать и управлять своими записями, но не имеет полномочий публиковать их на сайте.
- Подписчик: пользователь, который может только управлять своим профилем.
Зачем использовать кастомные роли пользователей?
По правде говоря, стандартных пользовательских ролей вполне достаточно для разных целей. Но может возникнуть необходимость выйти за рамки этих шести ролей и создать более подходящую для собственных целей. Кстати, это можно сделать без плагинов, и вскоре вы узнаете, как именно.
Но для начала неплохо было бы ответить на главный вопрос — для чего вообще использовать кастомные роли?
Например, чтоб убедиться, что у клиентов есть доступ только к нужным им разделам сайта. Можно даже не сомневаться, что многие попытаются поспорить на этот счет, якобы пользователь должен иметь полный доступ ко всему сайту. Конечно, это звучит неплохо, если у вас нет договора с клиентом на техническое обслуживание, и после полной передачи ему сайта вы можете смело браться за другой проект.
Но если вы все же ответственны за постоянную поддержку сайта, то вам лучше бы распределить доступ к его админке по кастомным ролям пользователей. Таким образом, можно обеспечить клиентский сайт всем, что необходимо для его эффективности, в том числе и контент. К тому же, с помощью таких ролей можно ограничить доступ к определенным функциям и действиям во избежание путаниц, как например, возможность добавлять или удалять плагины, активировать темы, прочее.
Давайте вкратце ознакомимся с основными их функциями WordPress для этих целей.
Основные функции WordPress для управления пользователями
Для управления кастомными ролями и их эффективностью, существует пять очень простых функций:
- add_role(): добавляет роли пользователя
- remove_role(): удаляет кастомную роль
- add_cap(): добавляет кастомные возможности для роли
- remove_cap(): удаляет кастомные возможности из роли
- get_role(): получает информацию о роли вместе с ее возможностями.
В этом руководстве мы используем только одну функцию add_role(), так как мы собираемся создать кастомную роль пользователя для вымышленного клиента.
Определение роли пользователя
Прежде, чем мы погрузимся в код, нам нужно составить план наших действий. Как показывает опыт, работа с кодом без плана действий — это не очень хорошее решение.
Дадим роли название. Пускай это будет банально «Клиент».
А теперь возникает вопрос — какие возможности есть у этой роли? Их масса. А точнее, более 50 только при установке WordPress. Но их количество увеличивается с каждым добавленным плагином. Но сейчас речь идет о том, какие цели преследуем мы, исходя из этой роли. А они заключаются в следующем:
- Создание Записей
- Редактирование Записей
- Редактирование чужих Записей
- Управление Рубриками
- Редактирование Страниц
Не менее важным являются ограничения, которые мы хотим установить. А именно, ограничения на:
- Редактирование тем
- Добавление/удаление плагинов
- Обновление версии WordPress
Написание кода
Этот код мы добавим в файл functions.php активной темы на сайте:
// Add a custom user role $result = add_role( 'client', __( 'Client' ), array( ) );
Добавив эту часть кода, вы технически уже создали новую пользовательскую роль. Вы можете проверить это в выпадающем списке на странице «Добавить нового пользователя». Проблема состоит только в том, что в этой роли нет явных возможностей. Поэтому мы добавим те критерии, которые ранее установили в качестве целей для нашей роли. Для этого добавьте секцию кода array в ту информацию, которую вы уже добавили в файл functions.php:
// Add a custom user role $result = add_role( 'client', __( 'Client' ), array( 'read' => true, // true allows this capability 'edit_posts' => true, // Allows user to edit their own posts 'edit_pages' => true, // Allows user to edit pages 'edit_others_posts' => true, // Allows user to edit others posts not just their own 'create_posts' => true, // Allows user to create new posts 'manage_categories' => true, // Allows user to manage post categories 'publish_posts' => true, // Allows the user to publish, otherwise posts stays in draft mode ) );
Это обеспечит созданную роль необходимыми возможностями. Но вы же помните, нам еще нужно установить ограничения? И сделаем мы это с помощью следующего кода:
// Add a custom user role $result = add_role( 'client', __( 'Client' ), array( 'read' => true, // true allows this capability 'edit_posts' => true, // Allows user to edit their own posts 'edit_pages' => true, // Allows user to edit pages 'edit_others_posts' => true, // Allows user to edit others posts not just their own 'create_posts' => true, // Allows user to create new posts 'manage_categories' => true, // Allows user to manage post categories 'publish_posts' => true, // Allows the user to publish, otherwise posts stays in draft mode 'edit_themes' => false, // false denies this capability. User can’t edit your theme 'install_plugins' => false, // User cant add new plugins 'update_plugin' => false, // User can’t update any plugins 'update_core' => false // user cant perform core updates ) );
Как определить, что пользовательская роль установлена правильно?
Чтобы убедиться, что созданная вами новая роль пользователя работает корректно, необходимо выйти и повторно зайти в консоль сайта под логином и паролем этого пользователя.
В зависимости от установленных возможностей и ограничений, в админке вы сразу же заметите доступные и недоступные вам разделы для редактирования. На изображении ниже указано, что именно вы увидели бы, если бы установили роль клиента, как мы сделали это выше:
Теперь вы можете быть спокойными, будь вы владельцем сайта или же его менеджером, хотя бы потому, что каждый пользователь будет отвечать за доступный ему раздел в админке.
Комментарии к записи: 4
а как эту роль через админку присваивать новому пользователю?
Может кому пригодится: самый простой способ — установить плагин User Role Editor, он на русском языке в том числе. Индивидуально каждого пользователя или для всей группы.
Подскажите а как добавить в эту роль разрешение на редактирование TablePress
А как вывести выбор роли при регистрации пользователя? Чтоб в форме регистрации человек выбирал свою роль из тех, что я позволил. Например подписчик или читатель, но не мог выбрать администратор или редактор