Не разрешайте пользователям создавать новые посты и страницы

Вопрос или проблема

Не разрешайте пользователям создавать новые посты и страницы

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

С помощью моих пользовательских типов записей я могу установить возможность create_post -> create_{cpt_name} и установить её в значение false для этой группы пользователей. В бэкенде они теперь не видят кнопку добавления, но все еще могут редактировать посты. Это именно то, что я хочу. К сожалению, мне не удалось найти способ настроить эту возможность для предопределенных CPT WordPress (Записи и Страницы). Также плагин Members кажется неспособным ограничить роли пользователей в создании новых постов, позволяя им редактировать.

В ходе исследования я обнаружил, что это похоже на большую проблему WordPress, которая еще не решена. Это правда?

Если нет, я был бы очень благодарен, если кто-то мог бы помочь мне с этим… Это действительно стало бы решением большой проблемы моего сайта!

Используйте remove_cap для этого.

function remove_proofreader_create_posts(){
    global $wp_roles;
    $wp_roles->remove_cap( 'proof_reader', 'create_posts' );
    $wp_roles->remove_cap( 'proof_reader', 'create_pages' );
}

ПРИМЕЧАНИЕ: Это не глобальная функция, а метод классов WP_Roles, WP_Role и WP_User. Его нужно вызывать с использованием экземпляра одного из этих классов, как показано в примерах.

ТАКЖЕ: Вам нужно вызвать функцию один раз, например, во время активации плагина, а не на постоянном хуке.

Ссылка: https://codex.wordpress.org/Function_Reference/remove_cap

Может быть, этот альтернативный подход к remove_cap() решит проблему

add_action( 'init', 'stackx_set_proof_reader_capabilities' );
function stackx_set_proof_reader_capabilities() {

   // Получаем объект роли.
   $role = get_role( 'proof_reader' );

   // Список возможностей для удаления у редакторов.
   $caps = array(
       'create_posts',
       'create_pages',
   );

   foreach ( $caps as $cap ) :
       // Удаляем возможность.
       $role->remove_cap( $cap );
   endforeach;
}

Ответ или решение

Конечно! Чтобы создать новую роль пользователя в WordPress под названием "Корректор" (Proofreader), которая сможет читать и редактировать записи и страницы, но не сможет создавать новые, вам нужно будет использовать функцию remove_cap() для удаления соответствующих возможностей от этой роли.

Шаги по настройке роли "Корректор"

  1. Создание и назначение роли: Убедитесь, что вы создали роль "Корректор". Это можно сделать с помощью плагинов, таких как Members, или через собственный код.

  2. Удаление возможности создания записей и страниц: Для того чтобы удалить возможность создания записей и страниц, можно использовать следующий код:
add_action( 'init', 'stackx_set_proof_reader_capabilities' );

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

    // Список возможностей для удаления у корректора.
    $caps = array(
        'create_posts',
        'create_pages',
    );

    foreach ( $caps as $cap ) {
        // Удаляем возможность.
        $role->remove_cap( $cap );
    }
}
  1. Активация функции: Рекомендуется вызвать данную функцию один раз, например, при активации вашего плагина, чтобы изменения вступили в силу.

Важные моменты

  • Убедитесь, что вы вызываете эту функцию из файла функции вашего плагина или из файла functions.php вашей темы.
  • После выполнения этого кода пользователи с ролью "Корректор" не смогут видеть кнопки для создания новых записей и страниц, но при этом они смогут редактировать существующий контент.

Примечания

Необходимо иметь в виду, что функции WordPress могут меняться, и следует проверять новости и обновления платформы. Тем не менее, текущий метод исправляет ситуацию, которую вы описали, и обеспечивает пользовательский контроль за доступом.

Если у вас есть дополнительные вопросы или потребности, не стесняйтесь спрашивать!

Оцените материал
Добавить комментарий

Капча загружается...