Насправді, у користувачів 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( ) );
Додавши цю частину коду, ви технічно вже створили нову роль користувача. Ви можете перевірити це у списку, що випадає, на сторінці «Додати нового користувача». Проблема полягає лише в тому, що у цій ролі немає явних можливостей. Тому ми додамо ті критерії, які раніше встановили як цілі для нашої ролі. Для цього додайте секцію коду масив ту інформацію, яку ви вже додали до файлу 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
А як вивести вибір ролі під час реєстрації користувача? Щоб у вигляді реєстрації людина вибирав своєї ролі з тих, що дозволив. Наприклад передплатник чи читач, але не міг вибрати адміністратор чи редактор