add_role()
Додає нову роль WordPress.
Функція повинна бути викликана лише один раз. Тому що вона змінює дані в базі даних (таблиця wp_options , поле wp_user_roles ). Тому краще змінювати їх під час активації/деактивації плагіна або теми, див.
Коли викликати
Перед тим як додавати або змінювати роль, переконайтеся, що глобальна змінна $wp_roles доступна. Найкраще використовувати хуки активації плагінів або тим, щоб додати нову роль. За хук активації плагіна відповідає функція register_activation_hook() .
Видалення існуючої ролі
Якщо ви створюєте нову роль і вказуєте їй можливості, переконайтеся, що такої ролі не існує. Ця функція не працюватиме якщо роль вже існує в базі даних.
Варіант вирішення такої проблеми перед створенням ролі її можна видалити, використовуючи функцію remove_role() , в якій вказати створювану вами роль.
Хуків немає.
Повертає
WP_Role|null
. WP_Role об’єкт, якщо вдалося додати роль і null, якщо не вдалося.
Використання
add_role($role, $display_name, $capabilities);
-
$role
(рядок) (обов’язковий) - Назва ролі: administrator, editor, author, contributor, subscriber.
-
$display_name
(рядок) (обов’язковий) - Ім’я для ролі, що відображається: Адміністратор, Автор, Передплатник і т.д.
-
$capabilities
(масив) -
Масив із можливостями нової ролі. Можливості за замовчуванням
дивіться тут .
За замовчуванням: array()
Приклади
#1 Створимо нову роль
Роль називатиметься basic_contributor
, а відображатиметься як “Основний учасник”.
Код має бути запущений лише один раз! Не залишайте його працювати постійно!
$result = add_role( 'basic_contributor', 'Основний учасник', array( 'read' => true, // true дозволяє цю можливість 'edit_posts' => true, // true дозволяє редагувати пости 'upload_files' => true, // може завантажувати файли ) ); if ( null !== $result ) { echo 'Ура! Нова роль створена!'; } else { echo 'Ой... Така роль вже існує.'; }
#2 Створення нової ролі під час активації плагіна
register_activation_hook( __FILE__, 'add_roles_on_plugin_activation' ); function add_roles_on_plugin_activation() { add_role( 'custom_role', 'Custom Subscriber', array( 'read' => true, 'level_0' => true ) ); }
#3 Створення нової ролі при активації теми та видалення ролі при деактивації теми
// Видаляємо роль при деактивації нашої теми add_action( 'switch_theme', 'deactivate_my_theme'); function deactivate_my_theme() { remove_role( 'basic_contributor'); } // Додаємо роль при активації нашої теми add_action( 'after_switch_theme', 'activate_my_theme'); function activate_my_theme() { add_role( 'basic_contributor', 'Основний учасник', [ 'read' => true, // true дозволяє цю можливість 'edit_posts' => true, // true дозволяє редагувати пости 'upload_files' => true, // може завантажувати файли ] ); }
Подробиці читайте в описі до хуків after_switch_theme .
#4 Наслідуємо можливості ролі “Автор”
register_activation_hook( __FILE__, 'add_roles_on_plugin_activation' ); function add_roles_on_plugin_activation() { // Отримаємо об'єкт даних ролі "Автор" $ author = get_role( 'author'); // Створимо нову роль і наділимо її правами "Автора" add_role( 'project_manager', 'Керівник проекту', $author->capabilities ); }
список змін
З версії 2.0.0 | Введено. |
add role WP 6.0.2
function add_role( $role, $display_name, $capabilities = array() ) { if (empty($role)) { return; } return wp_roles()->add_role( $role, $display_name, $capabilities ); }