Skip to content

Всё для WordPress, веб-разработки — и не только

🔒 Как скрыть админ-бар WordPress для всех пользователей, кроме администраторов

🔒 Как скрыть админ-бар WordPress для всех пользователей, кроме администраторов

Сделали сайт для клиента, передали доступы, а через день звонок: «Почему у меня на сайте какая-то чёрная полоса сверху? Я ничего не понимаю, это выглядит странно». Знакомая ситуация?

По умолчанию WordPress показывает админ-бар (тёмную панель в самом верху экрана) всем залогиненным пользователям. Для администратора это удобно: быстрый доступ к консоли, редактирование страниц, управление комментариями. Но для обычного пользователя, подписчика или клиента эта полоса выглядит как визуальный мусор. Она закрывает шапку сайта, путает и создаёт ощущение «недоделанности».

Разберём три работающих способа убрать админ-бар WordPress для всех, кроме администраторов. От быстрой настройки в профиле до чистого кода в functions.php и плагина. Плюс бонус: как отключить тулбар вообще для всех, включая админов.

💡 Быстрый обзор:

  • Способ 1: отключаем админ-бар вручную в профиле пользователя (если их 2-3)
  • Способ 2: добавляем PHP-код в functions.php через хук show_admin_bar, рекомендуемый метод
  • Способ 3: устанавливаем плагин Hide Admin Bar Based on User Roles (без касания кода)
  • Бонус: скрываем админ-бар для всех пользователей, включая администраторов

Что такое админ-бар и зачем его отключать

Админ-бар, он же Toolbar, это тёмная горизонтальная полоса, которая появляется в самом верху сайта после входа в учётную запись. Не путайте с админ-панелью (/wp-admin): это разные вещи. Админ-бар виден и на фронтенде, и в консоли.

Для администратора в нём собраны быстрые ссылки: создать пост, зайти в кастомайзер, посмотреть комментарии. Для редактора, переход к материалам. Но для подписчика или покупателя в WooCommerce там лишь пара пунктов вроде «Редактировать профиль», а полоса занимает 32 пикселя по высоте и перекрывает шапку.

Когда вы отдаёте сайт клиенту или запускаете членский раздел, админ-бар для непривилегированных пользователей становится проблемой:

  • клиент думает, что сайт сломан;
  • пользователь случайно жмёт «Админ» и попадает в /wp-admin (пусть и с ограниченными правами, всё равно путаница);
  • дизайн шапки ломается, особенно на мобильных.

Отключение админ-бара для не-администраторов решает всё это одним движением.

Страница сайта WordPress до и после отключения админ-бара

Способ 1: отключаем вручную в профиле пользователя

Самый простой путь, снять одну галочку в настройках конкретного человека. Подходит, когда пользователей немного: буквально 2-3 учётные записи.

Перейдите в Пользователи → Все пользователи, наведите на нужного и нажмите «Изменить». Найдите опцию «Показывать панель инструментов при просмотре сайта» и снимите флажок. Прокрутите вниз, нажмите «Обновить пользователя».

Готово. Для этого человека админ-бар исчез с фронтенда. Минус очевиден: на 50 пользователей вы потратите час монотонной работы.

Способ 2: код в functions.php, рекомендуемый метод

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

WordPress предоставляет фильтр show_admin_bar. Именно его рекомендует официальная документация разработчика: фильтр корректно обрабатывает и пользовательские настройки отображения, и глобальные правила. Старый подход с прямым вызовом show_admin_bar(false) всё ещё работает, но фильтр, чище и гибче.

Код добавляется в файл functions.php активной темы. Безопаснее всего, через плагин WPCode (бесплатный): он исключает риск опечатки и не зависит от смены темы.

1/**
2 * Скрываем админ-бар WordPress для всех,
3 * кроме администраторов.
4 */
5add_filter( 'show_admin_bar', 'sdstudio_restrict_admin_bar' );
6
7function sdstudio_restrict_admin_bar( $show ) {
8 return current_user_can( 'administrator' ) ? $show : false;
9}

Как это работает. Фильтр show_admin_bar вызывается каждый раз при рендеринге страницы. Функция sdstudio_restrict_admin_bar проверяет: если у текущего пользователя есть возможность administrator, возвращает исходное значение $show (как настроено у админа в профиле). Для всех остальных, принудительно false, админ-бар не показывается.

Куда вставлять код. Вот три варианта:

  • WPCode (рекомендуем): плагин → Code Snippets → Add Snippet → вставить код → Auto Insert → Save. Работает даже после смены темы.
  • functions.php темы: Appearance → Theme File Editor → functions.php. Риск: обновление темы затрёт изменения. Используйте только в дочерней теме.
  • Свой плагин: создайте /wp-content/plugins/sdstudio-disable-admin-bar/sdstudio-disable-admin-bar.php с заголовком плагина и этим же кодом. Надёжно и не зависит от темы.

После вставки откройте сайт в инкогнито-окне под тестовой учётной записью с ролью «Подписчик». Админ-бар должен исчезнуть.

Способ 3: плагин, для тех, кто не хочет трогать код

Бесплатный плагин Hide Admin Bar Based on User Roles решает задачу парой кликов. Устанавливается стандартно: Плагины → Добавить новый → поиск по названию → Установить → Активировать.

После активации перейдите в Настройки → Hide Admin Bar Settings. Вы увидите список всех ролей на сайте: администратор, редактор, автор, подписчик и любые кастомные. Отметьте флажками те роли, для которых админ-бар нужно скрыть, и сохраните.

Плюс плагина, наглядность. Вы видите все роли сразу и управляете видимостью админ-бара без единой строчки кода. Минус, ещё один плагин в системе. Если сайт уже нагружен расширениями, лучше выбрать способ 2.

Бонус: как отключить админ-бар для всех, включая администраторов

Иногда админ-бар мешает даже вам. Например, вы верстаете шапку сайта и чёрная полоса портит обзор. Или делаете скриншоты для портфолио.

Самый короткий способ, одна строка:

1add_filter( 'show_admin_bar', '__return_false' );

Этот фильтр принудительно возвращает false для всех без исключения. Администратор, редактор, подписчик, админ-бар исчезает у всех на фронтенде. В консоли (/wp-admin) тулбар при этом остаётся: WordPress не отключает его в админке с версии 3.3.

Если нужно убрать админ-бар и в консоли тоже, добавьте CSS:

1#wpadminbar { display: none !important; }
2html { margin-top: 0 !important; }

Второе правило убирает 32-пиксельный отступ, который WordPress резервирует под админ-бар. Аккуратно: в консоли без тулбара вы потеряете быстрый доступ к созданию постов и настройкам. Используйте только временно, для вёрстки или скриншотов.

⁉️🤔 Частые вопросы

В чём разница между админ-баром и админ-панелью WordPress?

Админ-бар (Toolbar), это тёмная полоса в самом верху экрана, видна на фронтенде и в консоли после входа. Админ-панель (/wp-admin), это полноценный бэкенд WordPress: консоль, список постов, настройки. Отключение админ-бара не закрывает доступ к /wp-admin, пользователь всё ещё может туда зайти, если знает URL.

Код не сработал, админ-бар всё равно виден. В чём дело?

Три частые причины. Первая: вы проверяете под администратором, метод из способа 2 оставляет админ-бар для админов намеренно, проверяйте под тестовым подписчиком. Вторая: кеш. Сбросьте кеш плагина (WP Rocket, LiteSpeed) и откройте сайт в инкогнито. Третья: код вставлен не в то место. functions.php дочерней темы, да. wp-config.php, нет, фильтры там не работают.

Можно ли скрыть админ-бар для конкретной роли, например только для подписчиков?

Да. Замените current_user_can( 'administrator' ) на проверку нужной роли. Например, чтобы скрыть для подписчиков: return current_user_can( 'subscriber' ) ? false : $show;. Или используйте плагин из способа 3, там это делается флажками.

Что будет с админ-баром после обновления WordPress?

Ничего. Хук show_admin_bar существует с версии 3.1 и никуда не денется. Это часть ядра, не темы и не плагина. Код из способа 2 будет работать после любого обновления WordPress.

Безопасно ли отключать админ-бар для клиентов?

Абсолютно. Админ-бар, это элемент интерфейса, а не механизм безопасности. Права доступа определяются ролью пользователя, и отключение тулбара на них не влияет. Клиент не потеряет доступ к тому, что ему действительно разрешено.

Скрывать админ-бар или оставить: что выбрать

Для администратора и редактора админ-бар, рабочий инструмент. Быстрые переходы к созданию поста, модерации комментариев и кастомайзеру экономят десятки кликов в день. Для всех остальных это визуальный мусор.

Если на сайте больше трёх пользователей с ролями ниже редактора, ставьте код из способа 2. Одна минута, и вопрос закрыт навсегда. Работает на любом количестве учётных записей, не зависит от темы и переживает обновления WordPress. Для быстрой правки на себя, бонусный сниппет с __return_false.

А если вы только начинаете разбираться с WordPress и код в functions.php пока пугает, плагин из способа 3 решит задачу без риска что-то сломать. Выберите роли, отметьте флажками, сохраните. Через месяц, когда освоитесь, замените плагин на код, одной строчкой.