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 вирішить задачу без ризику щось зламати. Виберіть ролі, позначте прапорцями, збережіть. За місяць, коли освоїтеся, замініть плагін на код одним рядком.