Удаление возможностей ролей в WordPress: метод remove_cap()

Удаление возможностей у ролей в WordPress

Введение

Метод WP_ROLES::REMOVE_CAP() позволяет удалять определенные возможности у ролей пользователей в WordPress. Это полезно, если вы хотите ограничить доступ к определенным функциям.

Основная информация

  • Метод: remove_cap()
  • Класс: WP_Roles
  • Возврат: ничего (null)

Параметры

  • $role (string, обязательный) — имя роли, у которой будет удалено право.
  • $cap (string, обязательный) — название возможности, которую нужно удалить.

Пример использования

Для использования этого метода, вам нужно получить глобальный объект $wp_roles:

global $wp_roles;
$wp_roles->remove_cap( $role, $cap );

Пример 1: Запрет на чтение приватных постов для пользователей с ролью редактора

Если вы хотите запретить пользователям с ролью «редактор» читать приватные сообщения, вы можете использовать следующий код. Важно вызывать эту функцию только при активации вашего плагина:

function remove_editor_read_private_posts() {
    // get_role возвращает экземпляр класса WP_Role.
    $role = get_role( 'editor' );
    $role->remove_cap( 'read_private_posts' );
}

Этот же функционал можно реализовать через класс WP_Roles:

function remove_editor_read_private_posts(){
    global $wp_roles;
    $wp_roles->remove_cap( 'editor', 'read_private_posts' );
}

Пример 2: Удаление нескольких возможностей

Если вам нужно удалить сразу несколько возможностей у всех пользователей с ролью «редактор», то используйте следующий код:

function wpcodex_set_capabilities() {
    // Получаем объект роли.
    $editor = get_role( 'editor' );

    // Список возможностей для удаления у редактора.
    $caps = array(
        'moderate_comments',
        'manage_categories',
        'manage_links',
        'edit_others_posts',
        'edit_others_pages',
        'delete_posts',
    );

    foreach ( $caps as $cap ) {
        $editor->remove_cap( $cap );
    }
}

Пример 3: Удаление прав для конкретного пользователя

Если вы хотите удалить возможность для конкретного пользователя (например, с ID 5) читать приватные посты, это можно сделать следующим образом:

$user_id = 5;
$user = new WP_User( $user_id );
$user->remove_cap( 'read_private_posts' );

Важно! Вы не можете удалить право у пользователя, если оно включено в возможности его роли. Вы можете удалить только те права, которые были добавлены конкретному пользователю, но не являются частью его роли.

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

Изменения

  • С версии: 2.0.0 — введён метод remove_cap().

Этот метод является мощным инструментом для управления доступом к функциям в WordPress, поэтому используйте его с осторожностью.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *