Верхняя панель администрирования не отображается для роли пользователя “Редактор”

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

Чтобы управлять разрешениями ролей пользователей, я решил, что не всем 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);

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

Проблема с отсутствием верхней панели администратора для роли "Редактор" может быть связана с кодом, который вы упомянули. Давайте разберемся, как вы можете решить этот вопрос и обеспечить доступ пользователям с ролью "Редактор" к панели администратора.

Шаги по решению проблемы:

  1. Определение кода, снимающего доступ к панели:
    Ваш код remove_admin_bar() проверяет, является ли текущий пользователь администратором или редактором. Если обе проверки завершаются неудачей, функция show_admin_bar(false); отключает отображение панели администратора. Таким образом, редакторы не имеют доступа к верхней панели.

  2. Изменение логики:
    Вы правильно обнаружили, что нужно изменить логику в вашей функции. Убедитесь, что условие для отображения панелей правильное. Ниже приведен исправленный вариант функции:

    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'), чтобы позволить пользователям с ролью "Редактор" видеть панель.

  3. Проверка пользовательских ролей:
    Убедитесь, что у вашей роли "Редактор" действительно имеются необходимые права доступа. Вы можете управлять своими ролями с помощью плагина, такого как "User Role Editor" или аналогичного, где можно настроить доступ к различным функциям WordPress.

  4. Тестирование:
    Примените изменения к вашему файлу functions.php в теме и протестируйте, имеет ли "Редактор" доступ к панели администратора как ожидалось.

Документация по PHP:

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

Эти ресурсы помогут вам глубже понять, как работают роли и возможности в WordPress.

Заключение:

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

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

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