WordPress. Права и роли пользователей
13.08.2019
Теги: CMS • Web-разработка • WordPress • Пользователь • ПраваДоступа • Редактор
Часто над сайтом работает несколько человек: авторы, редактроры, администраторы. У каждого из них есть свои обязанности и соответствующие права доступа. Владельцу сайта будет правильно выдать каждому из них лишь необходимые полномочия. Это в первую очередь нужно для безопасности всего сайта.
Какие бывают роли пользователей
По умолчанию в WordPress существует 5 стандартных типов пользователей:
- Администратор (
administrator
) - Редактор (
editor
) - Автор (
author
) - Участник (
contributor
) - Подписчик (
subscriber
)
Таблица ролей пользователей
Право | Администратор | Редактор | Автор | Участник | Подписчик |
---|---|---|---|---|---|
activate_plugins |
да | нет | нет | нет | нет |
deactivate_plugins |
да | нет | нет | нет | нет |
create_users |
да | нет | нет | нет | нет |
delete_plugins |
да | нет | нет | нет | нет |
delete_themes |
да | нет | нет | нет | нет |
delete_users |
да | нет | нет | нет | нет |
edit_files |
да | нет | нет | нет | нет |
edit_plugins |
да | нет | нет | нет | нет |
edit_theme_options |
да | нет | нет | нет | нет |
edit_themes |
да | нет | нет | нет | нет |
edit_users |
да | нет | нет | нет | нет |
export |
да | нет | нет | нет | нет |
import |
да | нет | нет | нет | нет |
install_plugins |
да | нет | нет | нет | нет |
install_themes |
да | нет | нет | нет | нет |
install_languages |
да | нет | нет | нет | нет |
update_languages |
да | нет | нет | нет | нет |
list_users |
да | нет | нет | нет | нет |
manage_options |
да | нет | нет | нет | нет |
promote_users |
да | нет | нет | нет | нет |
remove_users |
да | нет | нет | нет | нет |
switch_themes |
да | нет | нет | нет | нет |
update_core |
да | нет | нет | нет | нет |
update_plugins |
да | нет | нет | нет | нет |
update_themes |
да | нет | нет | нет | нет |
edit_dashboard |
да | нет | нет | нет | нет |
Право | Администратор | Редактор | Автор | Участник | Подписчик |
unfiltered_html |
да | да | нет | нет | нет |
moderate_comments |
да | да | нет | нет | нет |
manage_categories |
да | да | нет | нет | нет |
manage_links |
да | да | нет | нет | нет |
edit_others_posts |
да | да | нет | нет | нет |
edit_pages |
да | да | нет | нет | нет |
edit_others_pages |
да | да | нет | нет | нет |
edit_published_pages |
да | да | нет | нет | нет |
publish_pages |
да | да | нет | нет | нет |
delete_pages |
да | да | нет | нет | нет |
delete_others_pages |
да | да | нет | нет | нет |
delete_published_pages |
да | да | нет | нет | нет |
delete_others_posts |
да | да | нет | нет | нет |
delete_private_posts |
да | да | нет | нет | нет |
edit_private_posts |
да | да | нет | нет | нет |
read_private_posts |
да | да | нет | нет | нет |
delete_private_pages |
да | да | нет | нет | нет |
edit_private_pages |
да | да | нет | нет | нет |
read_private_pages |
да | да | нет | нет | нет |
Право | Администратор | Редактор | Автор | Участник | Подписчик |
edit_published_posts |
да | да | да | нет | нет |
upload_files |
да | да | да | нет | нет |
publish_posts |
да | да | да | нет | нет |
delete_published_posts |
да | да | да | нет | нет |
Право | Администратор | Редактор | Автор | Участник | Подписчик |
edit_posts |
да | да | да | да | нет |
delete_posts |
да | да | да | да | нет |
Право | Администратор | Редактор | Автор | Участник | Подписчик |
read |
да | да | да | да | да |
Функции для работы с ролями и правами
Функция add_role()
Добавляет новую роль, должна быть вызвана всего один раз. Потому что она изменяет данные в базе данных (таблица wp_options
, поле wp_user_roles
). Поэтому лучше изменять их во время активации/деактивации плагина или темы.
register_activation_hook(__FILE__, function() { // проверяем права пользователя на активацию плагинов if (!current_user_can('activate_plugins')) { return; } // добавляем новую роль «Модератор» add_role( 'moderator', 'Модератор', array( 'read' => true, // true разрешает эту возможность 'edit_others_posts' => true, // true разрешает редактировать посты 'delete_others_posts' => false, // false запрещает удалять посты ) ); });
Функция remove_role()
Удаляет роль, должна быть вызвана всего один раз. Потому что она изменяет данные в базе данных (таблица wp_options
, поле wp_user_roles
). Поэтому лучше изменять их во время активации/деактивации плагина или темы.
register_deactivation_hook(__FILE__, function() { // проверяем права пользователя на деактивацию плагинов if (!current_user_can('deactivate_plugins')) { return; } // удаляем новую роль «Модератор» remove_role('moderator'); });
Функция get_role()
Получает массив (объект) данных с возможностями указанной роли.
$role = get_role('author'); print_r($role);
WP_Role Object ( [name] => author [capabilities] => Array ( [upload_files] => 1 [edit_posts] => 1 [edit_published_posts] => 1 [publish_posts] => 1 [read] => 1 [level_2] => 1 [level_1] => 1 [level_0] => 1 [delete_posts] => 1 [delete_published_posts] => 1 ) )
Примеры использования функции:
register_activation_hook(__FILE__, function() { // проверяем права пользователя на активацию плагинов if (!current_user_can('activate_plugins')) { return; } // добавляем возможность загрузки файлов для роли «Подписчик» $subscriber = get_role('subscriber'); if (!$subscriber->has_cap('upload_files')) { $subscriber->add_cap('upload_files'); } });
register_deactivation_hook(__FILE__, function() { // проверяем права пользователя на деактивацию плагинов if (!current_user_can('deactivate_plugins')) { return; } // удаляем возможность загрузки файлов для роли «Подписчик» $subscriber = get_role('subscriber'); if ($subscriber->has_cap('upload_files')) { $subscriber->remove_cap('upload_files'); } });
Функция wp_roles()
Получает глобальную переменную $wp_roles
, если она не определена, записывает в нее экземпляр класса WP_Roles
.
Функция current_user_can()
Позволяет проверить права текущего пользователя.
Функция user_can()
Позволяет проверить права указанного пользователя.
Функция author_can()
Проверяет указанную возможность у автора указанного поста.
Дополнительно
- WordPress. Загрузка svg-файлов
- Битрикс. Пользователи и группы
- Битрикс. Типы цен и наценки
- Битрикс. Права доступа
- Блог на Laravel 7, часть 15. Восстановление постов, slug для категории, поста и страницы
- Блог на Laravel 7, часть 11. Панель управления — назначение ролей и прав для пользователей
- Магазин на Laravel 7, часть 9. Панель управления сайтом, авторизация администратора
Поиск: CMS • Web-разработка • WordPress • Пользователь • Права доступа • Редактор