Описание функции WP_Roles::remove_cap()
Функция WP_Roles::remove_cap() позволяет удалить возможность (capability) у определенной роли пользователя в WordPress. Это полезно для управления правами доступа к различным функциям и ресурсам сайта.
Функция может использоваться при разработке тем и плагинов, когда требуется изменить права пользователей на определенные действия
Параметры
$role
Тип: string
Обязательный: Да
Описание: Имя роли, у которой удаляется возможность
Возможные значения:
0: administrator
1: editor
2: author
3: contributor
4: subscriber
$capability
Тип: string
Обязательный: Да
Описание: Имя возможности, которую нужно удалить
Возможные значения:
0: edit_posts
1: delete_posts
2: publish_posts
3: read
Возвращаемое значение
Тип: bool
Описание: Возвращает true при успешном удалении возможности, false в противном случае
Возможные значения:
• true — возможность успешно удалена
• false — удаление не удалось
Примеры использования
Базовый пример удаления возможности редактирования постов у роли редактора
$wp_roles = new WP_Roles();
$wp_roles->remove_cap('editor', 'edit_posts');
Теперь редакторы не смогут редактировать посты
Удаление возможности публиковать и удалять посты у авторов
$wp_roles = new WP_Roles();
$wp_roles->remove_cap('author', 'publish_posts');
$wp_roles->remove_cap('author', 'delete_posts');
Авторы не смогут публиковать и удалять свои посты
Проверка на наличие роли перед удалением возможности
$result = $wp_roles->remove_cap('nonexistent_role', 'edit_posts');
if (!$result) {
echo 'Не удалось удалить возможность';
}
Выводит сообщение об ошибке, если роль не существует
Удаление возможности редактирования постов у подписчиков при активации плагина
function my_custom_plugin_setup() {
$wp_roles = new WP_Roles();
$wp_roles->remove_cap('subscriber', 'edit_posts');
}
add_action('init', 'my_custom_plugin_setup');
Используется хук init для выполнения кода при инициализации
Безопасность
Валидация входных данных: Функция не проверяет существование роли или возможности перед удалением
Санитизация: Нет необходимости в санитизации, так как это внутренние значения
Рекомендации: Перед вызовом функции убедитесь, что роль и возможность существуют
— Связанные функции
Добавляет возможность к роли пользователя
Получает объект роли по имени
— Примечания
– Ограничения
Не работает с несуществующими ролями или возможностями
– Частые проблемы
- Попытка удалить возможность у несуществующей роли
- Ошибки при неправильном указании имени возможности