WordPress имеет механизм ролей и возможностей, или, иначе говоря, групп пользователей и их прав для того, чтобы контролировать поведение юзеров на сайте, особенно в административной части.
К примеру «Администраторы» — это группа пользователей, а switch_themes
(возможность смены темы оформления) уже относится к правам этой группы.
Как обычно я начну от простого к сложному.
1. Роли
В WordPress по умолчанию уже существует 6 групп пользователей:
- Super Admin — суперадминистратор, который имеет право управлять сетью сайтов.
- Administrator — администратор.
- Editor — редактор, может публиковать и редактировать посты других пользователей.
- Author — автор, может публиковать и редактировать собственные посты.
- Contributor — участник, может писать и отправлять свои посты на модерацию.
- Subscriber — подписчик, всё, что он может — это редактировать свой профиль.
Сразу после установки WordPress автоматически создается пользователь-администратор.
Также вы можете установить, какую роль нужно присваивать только что зарегистрированному пользователю. Это настраивается в «Настройки > Общие».
Изменить роль пользователя можно на странице его профиля или же на странице со всеми пользователями:
Чуть дальше я покажу, как можно удалить стандартные роли и создать собственную.
2. Возможности
В таблице для экономии места я не стал рассматривать роль суперадминистратора и подписчика. Суперадмин это по сути тот же администратор, только с правами управления сетью сайтов (WordPress Multisite). Чуть ниже я еще напишу про него. А вот про подписчиков не напишу, так как про них и так всё понятно — имеет только одну возможность read
.
.yyy{background: #4B658C;
color: #FFF;
text-align: center;}
Возможность | Admin | Editor | Author | Contributor |
---|---|---|---|---|
Плагины | ||||
install_plugins установка новых плагинов |
+ | |||
update_plugins обновление плагинов |
+ | |||
activate_plugins даёт доступ к странице плагинов |
+ | |||
edit_plugins возможность редактировать файлы плагинов |
+ | |||
delete_plugins удаление плагинов |
+ | |||
Темы | ||||
install_themes установка новых тем |
+ | |||
switch_themes изменение активной темы |
+ | |||
edit_themes редактирование файлов темы |
+ | |||
edit_theme_options изменение настроек темы |
+ | |||
update_themes обновление тем |
+ | |||
delete_themes удаление тем |
+ | |||
Настройки WordPress | ||||
update_core обновление движка |
+ | |||
import / export возможность пользоваться функциями импорта и экспорта |
+ | |||
manage_options изменение настроек сайта |
+ | |||
edit_dashboard изменения на странице консоли |
+ | |||
Пользователи | ||||
create_users создание новых пользователей |
+ | |||
edit_users редактирование пользователей |
+ | |||
delete_users удаление пользователей |
+ | |||
list_users доступ к списку пользователей |
+ | |||
promote_users изменение ролей пользователей |
+ | |||
remove_users удаление пользователей |
+ | |||
Комментарии | ||||
moderate_comments модерация комментариев |
+ | + | ||
Рубрики | ||||
manage_categories изменение рубрик |
+ | + | ||
Страницы | ||||
edit_pages редактирование страниц |
+ | + | ||
edit_others_pages редактирование страниц, созданных другими редакторами |
+ | + | ||
edit_published_pages редактирование опубликованных страниц |
+ | + | ||
publish_pages публикация страниц |
+ | + | ||
delete_pages удаление страниц |
+ | + | ||
delete_others_pages удаление страниц других пользователей |
+ | + | ||
delete_published_pages удаление опубликованных страниц |
+ | + | ||
delete_private_pages удаление личных страниц |
+ | + | ||
edit_private_pages редактирование личных страниц |
+ | + | ||
read_private_pages просмотр личных страниц |
+ | + | ||
Записи | ||||
edit_others_posts редактирование постов других пользователей |
+ | + | ||
delete_others_posts удаление записей других пользователей |
+ | + | ||
delete_private_posts удаление постов, отмеченных как «Личное» |
+ | + | ||
edit_private_posts редактирование личных постов |
+ | + | ||
read_private_posts просмотр личных постов |
+ | + | ||
edit_published_posts редактирование собственных опубликованных записей |
+ | + | + | |
publish_posts публикация постов |
+ | + | + | |
delete_published_posts удаление собственных опубликованных записей |
+ | + | + | |
edit_posts редактирование собственных записей |
+ | + | + | + |
delete_posts удаление собственных записей |
+ | + | + | + |
Другое | ||||
unfiltered_html возможность вставки HTML и JavaScript в посты, страницы, комментарии и виджеты |
+ | + | ||
upload_files загрузка файлов |
+ | + | + | |
read просмотр сайта |
+ | + | + | + |
Как и обещал, остановлюсь чуть подробнее на суперадминистраторах. Обычные администраторы имеют все права на управление своими сайтами. Суперадминистраторы же могут управлять любым сайтом в сети, а также всей сетью в целом.
У них есть несколько собственных возможностей:
-
manage_network
дает доступ в консоль сети, -
manage_sites
доступ к странице управления сайтами сети, -
manage_network_users
возможность управления пользователями сети, -
manage_network_themes
управление темами сети, -
manage_network_options
доступ к параметрам сети;
3. Уровни
Начиная с версии WordPress 3.0 уровни пользователей больше не используются!
4. Функции для работы с ролями и возможностями пользователей
add_role() — создание собственной роли
Функция заносит данные в базу, поэтому лучше всего её использовать только один раз, например при активации плагина или темы.
/* * допустим я добавлю этот код в файл плагина и сделаю так, чтобы он запускался при активации этого самого плагина */ register_activation_hook( __FILE__, 'true_new_role_plugin_activate' ); function true_new_role_plugin_activate() { $new_role = add_role( 'comm_moderator', // название роли __( 'Comment Moderator' ), // отображаемое название роли (модератор комментариев) array( // массив возможностей, true - разрешено, false - запрещено 'read' => true, // ну это понятно 'moderate_comments'=> true // разрешим модерировать комментарии ) ); if ( null !== $result ) { // смотрим результат // роль успешно создана } else { // если null, то значит роль уже существует } } |
remove_role() — удаление ролей
Также, как и add_role()
, функция изменяет содержимое базы данных — а значит не нужно просто тупо вставлять её в functions.php
.
В примере удалим роль, созданную в прошлой главе:
remove_role('comm_moderator'); // в качестве параметра указываем название роли и всё, дело сделано |
get_role() — получение информации о группе пользователей
В случае успеха возвращает объект WP_Role (который состоит преимущественно из возможностей роли), в случае неудачи — null.
$my_role = get_role( 'comm_moderator' ); // указываем роль, которая нам нужна print_r( $my_role ); // так можно вывести содержимое объекта |
add_cap() и remove_cap() — добавление и удаление возможностей
Благодаря этим функциям вы можете добавить или удалить права для пользователей определенной роли или даже для пользователей с определенными ID.
Эти функции также изменяют содержимое базы данных, поэтому в качестве примера мы повесим их на активацию / деактивацию темы.
function true_author_caps(){ global $pagenow; $role = get_role( 'author' ); // к примеру возьмем роль автора // $role = new WP_User( $user_id ); таким образом мы можем взять конкретного пользователя if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){ // если тема была активирована $role->add_cap( 'edit_others_posts' ); // разрешаем авторам редактировать посты других авторов } else { // если тема деактивирована $role->remove_cap( 'edit_others_posts' ); } } add_action( 'load-themes.php', 'true_author_caps' ); // вешаем функцию на хук |
Источник: misha.blog