Вопрос или проблема
Чтобы управлять разрешениями ролей пользователей, я решил, что не всем 50 пользователям следует иметь административные роли. Большинство наших пользователей являются “Редакторами”, и я переключил их с административной роли на роль редактора.
Теперь проблема в том, что у пользователей-редакторов нет доступа к верхней панели инструментов. (Ранее у них был доступ к ней, когда они были администраторами).
Что я попробовал до сих пор:
- Я убедился, что опция “Показывать панель инструментов при просмотре сайта” активирована.
- Я отключил все плагины в тестовой среде, пока сайт не упал.
- Я переключился на новую тему (и это сработало).
Любые идеи по устранению неполадок будут очень полезны.
Также, существует ли какая-либо документация по PHP, относящаяся к этой функции? Как можно убедиться, что у пользователей есть доступ к верхней панели администратора при разработке темы на PHP?
Похоже, я нашел участок кода, вызывающий проблему:
function remove_admin_bar() {
if (! current_user_can(‘administrator’, ‘editor’) && !is_admin() && !is_editor()) {
show_admin_bar(false);
}
}
add_action(‘after_setup_theme’, ‘remove_admin_bar’);
Я изменил show_admin_bar(false);
на
show_admin_bar(true);
Ответ или решение
Проблема с отсутствием верхней панели администратора для роли "Редактор" может быть связана с кодом, который вы упомянули. Давайте разберемся, как вы можете решить этот вопрос и обеспечить доступ пользователям с ролью "Редактор" к панели администратора.
Шаги по решению проблемы:
-
Определение кода, снимающего доступ к панели:
Ваш кодremove_admin_bar()
проверяет, является ли текущий пользователь администратором или редактором. Если обе проверки завершаются неудачей, функцияshow_admin_bar(false);
отключает отображение панели администратора. Таким образом, редакторы не имеют доступа к верхней панели. -
Изменение логики:
Вы правильно обнаружили, что нужно изменить логику в вашей функции. Убедитесь, что условие для отображения панелей правильное. Ниже приведен исправленный вариант функции:function remove_admin_bar() { if ( ! current_user_can('administrator') && ! current_user_can('editor') && ! is_admin()) { show_admin_bar(false); } else { show_admin_bar(true); } } add_action('after_setup_theme', 'remove_admin_bar');
Здесь мы добавили проверку
current_user_can('editor')
, чтобы позволить пользователям с ролью "Редактор" видеть панель. -
Проверка пользовательских ролей:
Убедитесь, что у вашей роли "Редактор" действительно имеются необходимые права доступа. Вы можете управлять своими ролями с помощью плагина, такого как "User Role Editor" или аналогичного, где можно настроить доступ к различным функциям WordPress. -
Тестирование:
Примените изменения к вашему файлуfunctions.php
в теме и протестируйте, имеет ли "Редактор" доступ к панели администратора как ожидалось.
Документация по PHP:
Для разработчиков темы, желающих контролировать доступ к админ-панели, полезно ознакомиться с официальной документацией WordPress:
Эти ресурсы помогут вам глубже понять, как работают роли и возможности в WordPress.
Заключение:
После внесения вышеуказанных изменений ваша проблема должна быть исправлена, и пользователи с ролью "Редактор" смогут видеть верхнюю панель администратора. Если у вас останутся вопросы или возникнут дополнительные проблемы, не стесняйтесь обращаться за помощью.