Как в WordPress запретить авторам удалять свои посты?

В WordPress, по умолчанию, пользователи с ролью “Автор” имеют возможность удалять созданные ими посты (записи). Иногда бывает необходимо запретить им такое действия, например, чтобы избежать случайно удаленных материалов с сайта (особенно, если на сайте много авторов).

Страница записей

Как запретить авторам удалять посты?

Для решения поставленной задачи рассмотрим два способа, позволяющих запретить авторам возможность удалять свои записи.

Метод 1. Плагин Capability Manager Enhanced

Бесплатный плагин Capability Manager Enhanced добавляет возможность гибко управлять правами для той или иной роли пользователей, включая и работу с записями. Во-первых, дополнение необходимо установить и активировать, после чего перейти в раздел Пользователи -> Capabilities.

Страница настроек прав пользователей в плагине Capability Manager Enhanced

Дальше, в блоке Select Role to View / Edit, следует выбрать Автор и нажать кнопку Load. В итоге на странице настроек будет доступен список всевозможных прав для этой группы пользователей. Для отключения возможности удаления своих материалов необходимо в блоке Deletion Capabilities убрать все “галочки” в строке Записи и нажать кнопку Save Changes.

Страница настроек прав пользователей в плагине Capability Manager Enhanced

Теперь, когда какой-либо автор захочет удалить свою запись, то просто не увидит соответствующую кнопку.

Страница записей

Способ 2. Вручную

Этот способ предполагает редактирование файла functions.php Вашей активной темы на WordPress-сайте.

Если Вы не знаете, как редактировать functions.php, то в этом случае Вам поможет плагин ProFunctions.

Итак, чтобы запретить автору удалять его записи, в указанный файл необходимо поместить следующий PHP-код:

function wpschool_change_author_role(){
    global $wp_roles;
    $wp_roles->remove_cap( 'author', 'delete_posts' );
    $wp_roles->remove_cap( 'author', 'delete_published_posts' );
}
add_action( 'init', 'wpschool_change_author_role' );

Следует отметить, что если Вы захотите отменить этот запрет, то после удаления этого кода необходимо будет восстановить права для пользователей роли “Автор”. Это можно сделать следующим образом:

function wpschool_change_author_role(){
    global $wp_roles;
    $wp_roles->add_cap( 'author', 'delete_posts' );
    $wp_roles->add_cap( 'author', 'delete_published_posts' );
}
add_action( 'init', 'wpschool_change_author_role' );
Курс WordPress-разработчик
Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров
Привет! Меня зовут Михаил Петров. Я копирайтер и занимаюсь этим с 2013 года. Скрупулезность и ответственность - моя фишка! Не могу делать как попало и добиваюсь, чтоб заказчик сказал минимум “неплохо”. За все время своей работы пришлось написать и отредактировать немало разной “текстовухи”, включая SEO-тексты, отзывы и прочую чушь. На сегодняшний день специализируюсь на написании информационных статей и руководств технического направления. Вижу смысл и светлое будущее в текстах для людей, а не для машин.