Вопрос или проблема
Привет, я настроил мультисайт и я суперадминистратор. Я хочу убрать у “Редакторов” возможность добавлять новые страницы. Я внес это изменение в функцию своей темы, что и убрало то, что мне нужно, однако это также убирает кнопку и подменю для моего администратора. Я пытался вставить условие 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');
Объяснение
-
Удаление прав доступа: Функция
wpcodex_set_capabilities
удаляет возможность редакторов публиковать страницы. Теперь они не смогут добавлять новые страницы, но они всё ещё смогут редактировать существующие. -
Скрытие кнопки: Функция
hide_buttons
скрывает кнопку "Добавить новую" только для редакторов, не затрагивая администраторов. Мы проверяем экран и роль пользователя, прежде чем скрыть кнопку.
Альтернативное решение: Плагины для управления ролями
Если вы предпочитаете более простой и наглядный подход, вы также можете рассмотреть возможность использования плагинов для управления ролями и правами, таких как User Role Editor. Эти плагины предлагают интерфейс, который позволяет легко управлять правами, не внося изменения в код.
Заключение
Теперь вы знаете, как программно удалить возможность добавления новых страниц для редакторов в WordPress Multisite, не затрагивая права администраторов. Следуя приведённым рекомендациям, вы сможете настроить права доступа пользователей в соответствии с вашими требованиями. При необходимости не стесняйтесь использовать плагины как альтернативу для более простого управления ролями.