Как получить все возможности существующей роли пользователя

21 мая 2016 г., 19:10:10
Просмотры: 20.2K
Голосов: 5

Как получить ВСЕ возможности (capabilities) существующей роли пользователя (например, Автор)? Я буду использовать это для быстрого дублирования существующей роли пользователя, затем создания новой роли и назначения или удаления возможностей для новой пользовательской роли.

1
Комментарии

Что-то вроде get_role( $role )->capabilities, например get_role( 'author' )->capabilities ? ..

Ismail Ismail
21 мая 2016 г. 19:50:55
Все ответы на вопрос 1
2

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

Чтобы ответить на ваш вопрос, приведу пример: мне нужна новая роль/группа пользователей, которая имеет почти все права Администратора, но не может редактировать плагины и тему. Вот как это сделать:

  1. Допустим, вы хотите скопировать существующие права Администратора, сделайте это так:

    $admin_role_set = get_role( 'administrator' )->capabilities;
    
  2. Вы можете создать новую роль пользователя с помощью add_role, подробности см. в справочнике. Затем мы можем использовать список прав, который получили в шаге #1:

    $role = 'content_admin';
    $display_name = 'Content Admin';
    add_role( $role, $display_name, $admin_role_set );
    
  3. Проверив список Ролей и Прав в справочнике, мы увидим, что нужно удалить права edit_plugins и edit_themes. Это можно сделать с помощью remove_cap():

    remove_cap( 'content_admin', 'edit_plugins' );
    remove_cap( 'content_admin', 'edit_themes' );
    
22 мая 2016 г. 09:19:41
Комментарии

На 3-м шаге, который вы описываете, не должно ли значение роли, передаваемое в метод remove_cap, быть 'content_admin' вместо 'editor', если вы продолжаете пример удаления возможности редактировать плагины и тему для новой созданной пользовательской роли?

Kory Kory
7 мая 2020 г. 21:21:04

Отредактировано согласно комментарию @Kory

mayersdesign mayersdesign
19 авг. 2021 г. 14:16:41