Роли и возможности пользователей WordPress

Опубликовано: 01.09.2018

видео Роли и возможности пользователей WordPress

Роли пользователей в WooCommerce

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



К примеру «Администраторы» — это группа пользователей, а switch_themes (возможность смены темы оформления) уже относится к правам этой группы.

Как обычно я начну от простого к сложному.

1. Роли

В WordPress по умолчанию уже существует 6 групп пользователей:

Super Admin — суперадминистратор, который имеет право управлять сетью сайтов. Administrator — администратор. Editor — редактор, может публиковать и редактировать посты других пользователей. Author — автор, может публиковать и редактировать собственные посты. Contributor — участник, может писать и отправлять свои посты на модерацию. Subscriber — подписчик, всё, что он может — это редактировать свой профиль.

Сразу после установки WordPress автоматически создается пользователь-администратор.


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

Также вы можете установить, какую роль нужно присваивать только что зарегистрированному пользователю. Это настраивается в «Настройки > Общие».

Изменить роль пользователя можно на странице его профиля или же на странице со всеми пользователями:


Создать новую роль пользователя на сайте Wordpress

Чуть дальше я покажу, как можно удалить стандартные роли и создать собственную.

2. Возможности

В таблице для экономии места я не стал рассматривать роль суперадминистратора и подписчика. Суперадмин это по сути тот же администратор, только с правами управления сетью сайтов (WordPress Multisite). Чуть ниже я еще напишу про него. А вот про подписчиков не напишу, так как про них и так всё понятно — имеет только одну возможность read.

Возможность 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' ) ; // вешаем функцию на хук

Смотрите также

plugin_basename() — возвращает путь к файлу плагина относительно папки plugins Задействовав эту функцию в каком-либо файле плагина, вы сможете получить путь к этому файлу, относительный к wp-content/plugins. Как сохранять элементы меню по отдельности? (вместо того, чтобы каждый раз сохранять всё меню целиком) 4 простых шага по внедрению на сайт функционала, позволяющего добавлять и изменять каждый элемент меню по отдельности, вместо того, чтобы сохранять меню целиком. is_active_widget() — проверяет, добавлен ли виджет в сайдбар Проверяет, добавлен ли виджет в сайдбар. Если да, возвращает ID сайдбара, в который он добавлен.
rss