Получение возможности роли
Функция "get_role" возвращает все возможности указанной роли. Название роли (administrator, editor, author, contributor, subscriber) передаётся функции "get_role" в качестве единственного аргумента:$role = get_role( 'author' );
print_r( $role );
В результате выполнения этого кода будет распечатана часть объекта "WP_Role", содержащего возможности только для роли автора ('author'):
WP_Role Object
(
[name] => author
[capabilities] => Array
(
[upload_files] => 1
[edit_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[read] => 1
[level_2] => 1
[level_1] => 1
[level_0] => 1
[delete_posts] => 1
[delete_published_posts] => 1
)
)
Добавление роли
Чтобы добавить новую роль в WordPress, воспользуйтесь функцией "add_role". Эта функция может принимать три параметра:add_role( $role, $display_name, $capabilities );
Название | Тип | Описание |
---|---|---|
$role | строка | Символьный код роли. Возможные значения: administrator, editor, author, contributor, subscriber |
$display_name | строка | Отображаемое название для роли после создания |
$capabilities | массив | Массив возможностей новой роли |
Продемонстрируем процесс добавления новой роли. Пользователь с этой ролью сможет читать и изменять посты, а также загружать файлы:
$role = add_role( 'qrator', 'Куратор',
array(
'read' => true,
'edit_posts' => true,
'upload_files' => true,
)
);
if( $role !== null ) {
echo 'Создана роль "Куратор"';
}else{
echo 'Не удалось создать роль "Куратор"';
}
Удаление роли
Удалить роль можно с помощью функции "remove_role". У этой функции только один аргумент - символьный код роли (administrator, editor, author, contributor, subscriber или любое другое, что было создано самостоятельно):remove_role( $role );
Эта функция ничего не возвращает в процессе своей работы. Попробуем удалить роль "qrator", которая была создана ранее, с помощью функции "add_role".
remove_role( 'qrator' );
Получение всех ролей WordPress
В образовательных целях стоит хотя бы раз получить вывод функции "wp_roles". Эта функция возвращает весь объект "WP_Roles", который содержит описание ролей пользователей и хранится в глобальной переменно "$wp_roles". Попробуем это сделать:$roles = wp_roles();
print_r( $roles );
По сути функция "get_role" выдаёт только часть того, что выдаёт "wp_roles". Приведённый выше код выведет на экран довольно большое описание всех ролей сайта:
WP_Roles Object
(
[roles] => Array
(
[administrator] => Array
(
[name] => Administrator
[capabilities] => Array
(
[switch_themes] => 1
[edit_themes] => 1
[activate_plugins] => 1
[edit_plugins] => 1
[edit_users] => 1
[edit_files] => 1
[manage_options] => 1
[moderate_comments] => 1
[manage_categories] => 1
[manage_links] => 1
[upload_files] => 1
[import] => 1
[unfiltered_html] => 1
[edit_posts] => 1
[edit_others_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[edit_pages] => 1
[read] => 1
[level_10] => 1
[level_9] => 1
[level_8] => 1
[level_7] => 1
[level_6] => 1
[level_5] => 1
[level_4] => 1
[level_3] => 1
[level_2] => 1
[level_1] => 1
[level_0] => 1
[edit_others_pages] => 1
[edit_published_pages] => 1
[publish_pages] => 1
[delete_pages] => 1
[delete_others_pages] => 1
[delete_published_pages] => 1
[delete_posts] => 1
[delete_others_posts] => 1
[delete_published_posts] => 1
[delete_private_posts] => 1
[edit_private_posts] => 1
[read_private_posts] => 1
[delete_private_pages] => 1
[edit_private_pages] => 1
[read_private_pages] => 1
[delete_users] => 1
[create_users] => 1
[unfiltered_upload] => 1
[edit_dashboard] => 1
[update_plugins] => 1
[delete_plugins] => 1
[install_plugins] => 1
[update_themes] => 1
[install_themes] => 1
[manage_downloads] => 1
[manage_database] => 1
[democracy_admin] => 1
[update_core] => 1
[list_users] => 1
[remove_users] => 1
[add_users] => 1
[promote_users] => 1
[edit_theme_options] => 1
[delete_themes] => 1
[export] => 1
)
)
[editor] => Array
(
[name] => Editor
[capabilities] => Array
(
[moderate_comments] => 1
[manage_categories] => 1
[manage_links] => 1
[upload_files] => 1
[unfiltered_html] => 1
[edit_posts] => 1
[edit_others_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[edit_pages] => 1
[read] => 1
[level_7] => 1
[level_6] => 1
[level_5] => 1
[level_4] => 1
[level_3] => 1
[level_2] => 1
[level_1] => 1
[level_0] => 1
[edit_others_pages] => 1
[edit_published_pages] => 1
[publish_pages] => 1
[delete_pages] => 1
[delete_others_pages] => 1
[delete_published_pages] => 1
[delete_posts] => 1
[delete_others_posts] => 1
[delete_published_posts] => 1
[delete_private_posts] => 1
[edit_private_posts] => 1
[read_private_posts] => 1
[delete_private_pages] => 1
[edit_private_pages] => 1
[read_private_pages] => 1
[democracy_admin] => 1
)
)
[author] => Array
(
[name] => Author
[capabilities] => Array
(
[upload_files] => 1
[edit_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[read] => 1
[level_2] => 1
[level_1] => 1
[level_0] => 1
[delete_posts] => 1
[delete_published_posts] => 1
)
)
[contributor] => Array
(
[name] => Contributor
[capabilities] => Array
(
[edit_posts] => 1
[read] => 1
[level_1] => 1
[level_0] => 1
[delete_posts] => 1
)
)
[subscriber] => Array
(
[name] => Subscriber
[capabilities] => Array
(
[read] => 1
[level_0] => 1
)
)
)
[role_objects] => Array
(
[administrator] => WP_Role Object
(
[name] => administrator
[capabilities] => Array
(
[switch_themes] => 1
[edit_themes] => 1
[activate_plugins] => 1
[edit_plugins] => 1
[edit_users] => 1
[edit_files] => 1
[manage_options] => 1
[moderate_comments] => 1
[manage_categories] => 1
[manage_links] => 1
[upload_files] => 1
[import] => 1
[unfiltered_html] => 1
[edit_posts] => 1
[edit_others_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[edit_pages] => 1
[read] => 1
[level_10] => 1
[level_9] => 1
[level_8] => 1
[level_7] => 1
[level_6] => 1
[level_5] => 1
[level_4] => 1
[level_3] => 1
[level_2] => 1
[level_1] => 1
[level_0] => 1
[edit_others_pages] => 1
[edit_published_pages] => 1
[publish_pages] => 1
[delete_pages] => 1
[delete_others_pages] => 1
[delete_published_pages] => 1
[delete_posts] => 1
[delete_others_posts] => 1
[delete_published_posts] => 1
[delete_private_posts] => 1
[edit_private_posts] => 1
[read_private_posts] => 1
[delete_private_pages] => 1
[edit_private_pages] => 1
[read_private_pages] => 1
[delete_users] => 1
[create_users] => 1
[unfiltered_upload] => 1
[edit_dashboard] => 1
[update_plugins] => 1
[delete_plugins] => 1
[install_plugins] => 1
[update_themes] => 1
[install_themes] => 1
[manage_downloads] => 1
[manage_database] => 1
[democracy_admin] => 1
[update_core] => 1
[list_users] => 1
[remove_users] => 1
[add_users] => 1
[promote_users] => 1
[edit_theme_options] => 1
[delete_themes] => 1
[export] => 1
)
)
[editor] => WP_Role Object
(
[name] => editor
[capabilities] => Array
(
[moderate_comments] => 1
[manage_categories] => 1
[manage_links] => 1
[upload_files] => 1
[unfiltered_html] => 1
[edit_posts] => 1
[edit_others_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[edit_pages] => 1
[read] => 1
[level_7] => 1
[level_6] => 1
[level_5] => 1
[level_4] => 1
[level_3] => 1
[level_2] => 1
[level_1] => 1
[level_0] => 1
[edit_others_pages] => 1
[edit_published_pages] => 1
[publish_pages] => 1
[delete_pages] => 1
[delete_others_pages] => 1
[delete_published_pages] => 1
[delete_posts] => 1
[delete_others_posts] => 1
[delete_published_posts] => 1
[delete_private_posts] => 1
[edit_private_posts] => 1
[read_private_posts] => 1
[delete_private_pages] => 1
[edit_private_pages] => 1
[read_private_pages] => 1
[democracy_admin] => 1
)
)
[author] => WP_Role Object
(
[name] => author
[capabilities] => Array
(
[upload_files] => 1
[edit_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[read] => 1
[level_2] => 1
[level_1] => 1
[level_0] => 1
[delete_posts] => 1
[delete_published_posts] => 1
)
)
[contributor] => WP_Role Object
(
[name] => contributor
[capabilities] => Array
(
[edit_posts] => 1
[read] => 1
[level_1] => 1
[level_0] => 1
[delete_posts] => 1
)
)
[subscriber] => WP_Role Object
(
[name] => subscriber
[capabilities] => Array
(
[read] => 1
[level_0] => 1
)
)
)
[role_names] => Array
(
[administrator] => Administrator
[editor] => Editor
[author] => Author
[contributor] => Contributor
[subscriber] => Subscriber
)
[role_key] => wp_user_roles
[use_db] => 1
)