Удаление формы добавления новых страниц для роли редактора

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

Привет, я настроил мультисайт и я суперадминистратор. Я хочу убрать у “Редакторов” возможность добавлять новые страницы. Я внес это изменение в функцию своей темы, что и убрало то, что мне нужно, однако это также убирает кнопку и подменю для моего администратора. Я пытался вставить условие if, но не очень повезло!

//скрыть страницу
function hide_buttons()
{
    global $current_screen;

    if($current_screen->id == 'page');
    {
        echo '<style>.add-new-h2, a.page-title-action {display: none;}</style>';

    }
    
    !current_user_can('publish_posts'))
}
add_action('admin_head','hide_buttons'); // убирает кнопку "добавить новый" на странице страниц.


if( current_user_can('editor') ) {
    
    add_action( 'admin_menu', function () {
        remove_submenu_page( 'edit.php?post_type=page', 'post-new.php post_type=page' );  //убирает подпункт "добавить новый" в боковой панели администратора для редактора
    }, 999);

}

Хорошо, несколько моментов… есть довольно хорошо написанный плагин, который управляет ролями пользователей и правами: https://wordpress.org/plugins/user-role-editor/

Если вы хотите сделать это программно, вам следует:

    <?php
function wpcodex_set_capabilities(){
      global $wp_roles; // глобальный класс wp-includes/capabilities.php
      $role="editor";
      $cap = 'publish_pages';
      $wp_roles->remove_cap( $role, $cap ); 
}
add_action( 'init', 'wpcodex_set_capabilities' );
    ?>

Дайте знать, если это сработает 🙂

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

Удаление возможности добавления новых страниц для роли редактора в WordPress Multisite

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

Проблема

Как описано в вашем вопросе, вы уже внесли изменения в функции вашей темы, чтобы ограничить редакторов. Однако ваше текущее решение также влияет на видимость кнопки и подменю для администратора. Это происходит из-за того, что текущий код не учитывает роль текущего пользователя.

Решение

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

1. Удаление прав

Вставьте следующий код в файл functions.php вашей темы или в созданный вами плагин:

<?php
function wpcodex_set_capabilities(){
    global $wp_roles; // Глобальный класс wp-includes/capabilities.php
    $role = 'editor'; // Роль, которую мы хотим изменить
    $cap = 'publish_pages'; // Возможность, которую мы хотим удалить

    // Удаляем право для редактора добавлять новые страницы
    $wp_roles->remove_cap($role, $cap);
}

add_action('init', 'wpcodex_set_capabilities');
?>

2. Скрытие кнопки добавления страниц для редакторов

Если вы хотите также скрыть кнопку "Добавить новую" в админке для редакторов, вам нужно будет внести дополнительные изменения. Используйте следующий код:

function hide_buttons() {
    global $current_user, $current_screen;

    // Проверяем, если это экран страниц и текущий пользователь - редактор
    if ($current_screen->id == 'page' && current_user_can('editor')) {
        echo '<style>.add-new-h2, a.page-title-action {display: none;}</style>';
    }
}

add_action('admin_head', 'hide_buttons');

Объяснение

  1. Удаление прав доступа: Функция wpcodex_set_capabilities удаляет возможность редакторов публиковать страницы. Теперь они не смогут добавлять новые страницы, но они всё ещё смогут редактировать существующие.

  2. Скрытие кнопки: Функция hide_buttons скрывает кнопку "Добавить новую" только для редакторов, не затрагивая администраторов. Мы проверяем экран и роль пользователя, прежде чем скрыть кнопку.

Альтернативное решение: Плагины для управления ролями

Если вы предпочитаете более простой и наглядный подход, вы также можете рассмотреть возможность использования плагинов для управления ролями и правами, таких как User Role Editor. Эти плагины предлагают интерфейс, который позволяет легко управлять правами, не внося изменения в код.

Заключение

Теперь вы знаете, как программно удалить возможность добавления новых страниц для редакторов в WordPress Multisite, не затрагивая права администраторов. Следуя приведённым рекомендациям, вы сможете настроить права доступа пользователей в соответствии с вашими требованиями. При необходимости не стесняйтесь использовать плагины как альтернативу для более простого управления ролями.

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

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