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

Права доступа в WordPress — это разрешения, которые определяют, что конкретный пользователь может или не может делать на сайте. Например, может ли он редактировать страницы, устанавливать плагины или загружать изображения.
Когда вы создаете или редактируете роли пользователей, вы назначаете им определённые права доступа. Это позволяет вам регулировать действия пользователей на сайте.
Прежде чем начать, давайте выделим несколько основных прав (capabilities), которые наиболее часто используются в WordPress:
read — право для просмотра контента.
edit_posts — право для редактирования собственных записей.
publish_posts — право для публикации записей.
edit_others_posts — право для редактирования чужих записей.
manage_options — право для управления всеми настройками сайта (например, настройки плагинов и темы).
upload_files — право для загрузки файлов в медиа-библиотеку.
activate_plugins — право для активации плагинов.
edit_users — право для редактирования пользователей.
Эти права используются в различных ситуациях, например, чтобы решить, кто может изменять контент, публиковать статьи, изменять настройки сайта или управлять пользователями.
Теперь, когда мы знаем, что такое права доступа, давайте рассмотрим, как их применить на практике. В этой части статьи мы будем использовать функцию add_menu_page(), чтобы добавить меню и подменю с использованием различных прав доступа.
read)Мы начнем с создания простого пункта меню, доступного для всех зарегистрированных пользователей, включая подписчиков.
add_menu_page(
'Меню для всех', // Заголовок страницы
'Меню для всех', // Название в меню
'read', // Права доступа (все зарегистрированные пользователи)
'menu_for_all', // Слаг
'menu_for_all_page', // Функция вывода
'dashicons-visibility', // Иконка
25 // Позиция
);
function menu_for_all_page() {
echo '<h1>Это меню доступно для всех пользователей!</h1>';
}
Что делает этот код?
Создается пункт меню «Меню для всех», который будет доступен всем пользователям с правами read (что означает, что пункт меню будет доступен всем зарегистрированным пользователям).
В случае нажатия на этот пункт меню, откроется страница с заголовком «Это меню доступно для всех пользователей!».
Результат:
Пункт меню будет виден всем пользователям сайта, независимо от их роли.
edit_posts)Теперь давайте создадим пункт меню, доступный только для редакторов и администраторов. Это будет полезно, если вы хотите предоставить доступ к определенному функционалу только пользователям с более высокими правами.
add_menu_page(
'Меню для редакторов', // Заголовок страницы
'Меню для редакторов', // Название в меню
'edit_posts', // Права доступа (только редакторы и выше)
'menu_for_editors', // Слаг
'menu_for_editors_page', // Функция вывода
'dashicons-edit', // Иконка
25 // Позиция
);
function menu_for_editors_page() {
echo '<h1>Это меню доступно только для редакторов и администраторов!</h1>';
}
Что делает этот код?
Пункт меню «Меню для редакторов» будет доступен только пользователям с правами edit_posts (редакторы и администраторы).
Когда редактор или администратор кликнет по меню, откроется страница с сообщением «Это меню доступно только для редакторов и администраторов!».
Результат:
Пункт меню будет виден только для редакторов и администраторов, а другие пользователи не смогут его увидеть.
manage_options)Для администраторов можно добавить более высокий уровень доступа. Например, если вы хотите, чтобы доступ к меню был только у администраторов, используйте право manage_options, которое обычно ограничивает доступ к важным настройкам сайта (например, настройкам темы или плагинов).
add_menu_page(
'Меню для администраторов', // Заголовок страницы
'Меню для администраторов', // Название в меню
'manage_options', // Права доступа (только администраторы)
'menu_for_admins', // Слаг
'menu_for_admins_page', // Функция вывода
'dashicons-admin-tools', // Иконка
25 // Позиция
);
function menu_for_admins_page() {
echo '<h1>Это меню доступно только для администраторов!</h1>';
}
Что делает этот код?
Пункт меню «Меню для администраторов» будет доступен только пользователям с правами manage_options (то есть только администраторам).
Страница с заголовком «Это меню доступно только для администраторов!» будет открываться для администраторов.
Результат:
Пункт меню доступен только администраторам сайта. Пользователи с ролями ниже администратора не смогут его видеть.
upload_files)Допустим, вы хотите, чтобы пользователи, начиная с роли автор (и выше), могли загружать изображения в медиа-библиотеку. Для этого используется право upload_files.
add_menu_page(
'Меню для загрузки файлов', // Заголовок страницы
'Загрузка файлов', // Название в меню
'upload_files', // Права доступа (авторы и выше)
'menu_for_upload', // Слаг
'menu_for_upload_page', // Функция вывода
'dashicons-upload', // Иконка
25 // Позиция
);
function menu_for_upload_page() {
echo '<h1>Это меню для загрузки файлов доступно авторам и выше!</h1>';
}
Что делает этот код?
Пункт меню «Загрузка файлов» будет доступен пользователям с правами upload_files (например, авторы и редакторы).
Страница с заголовком «Это меню для загрузки файлов доступно авторам и выше!» будет отображаться для пользователей, которые могут загружать файлы.
Результат:
Пункт меню будет доступен для авторов, редакторов и администраторов.
Заключение
В этой статье мы рассмотрели основные права доступа в WordPress и показали, как их использовать для создания меню и управления доступом. Используя права доступа (capabilities), вы можете гибко настроить доступ для различных пользователей на вашем сайте. Это позволит вам создать более безопасную и удобную среду для работы пользователей с различными уровнями прав.
Настройка прав доступа — это не только важная часть безопасности сайта, но и эффективный инструмент для управления контентом и функционалом в WordPress.
Хуки активации и инициализации в WordPress: Где и когда создавать таблицы
59
Как создать таблицу в WordPress через functions.php: Полный гид по типам данных
64
Как создать собственное меню в админке WordPress: простое руководство для новичков
84
Кастомизация страницы входа в WordPress: логотип, цвета, фоновая картинка и собственный CSS
122
Как изменить или полностью убрать текст в подвале (футере) админ-панели WordPress
98
Добавление мета-описания и ключевых слов в WordPress 519
Минимальная сумма заказа WooCommerce 181
Как добавить виджет для валют на панель администратора WordPress 154
Как добавить поле «Отдел» и ограничить видимость категорий в WordPress 150
Как добавить изображение к категории WordPress и вывести его на сайте 130
Добавить комментарий