Skip to content

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

🔐 Кнопка входу та виходу в меню WordPress: покроковий посібник 2026

🔐 Кнопка входу та виходу в меню WordPress: покроковий посібник 2026

Стандартний WordPress не вміє показувати кнопку «Увійти» для незалогінених відвідувачів і «Вийти» для авторизованих в одному й тому самому місці меню. На перший погляд, дрібниця. Але для сайту з особистим кабінетом, членською зоною чи форумом це базова потреба, без якої навігація перетворюється на квест.

Раніше задачу закривав плагін BAW Login/Logout Menu. Автор закрив проєкт у 2025 році, і тисячі сайтів залишилися без оновлень. На зміну прийшов прямий спадкоємець, Login or Logout Menu Item з 20 000+ активних встановлень і рейтингом 4,8 на WordPress.org.

Зібрали все в одному посібнику: від встановлення плагіна за дві хвилини до кастомних редіректів за ролями та вимкнення адмінбару для звичайних користувачів.

💡 Швидкий огляд:

  • Встановіть плагін Login or Logout Menu Item і налаштуйте три поля редіректу
  • Додайте пункт «Login|Logout» у меню сайту через класичний або блоковий редактор
  • Налаштуйте тонку логіку через сніпети для functions.php: редірект за ролями, вихід без підтвердження, заміна wp-login.php
  • Сховайте адмінпанель від звичайних користувачів і заблокуйте їм доступ до wp-admin

Метод 1: плагін Login or Logout Menu Item, швидко і без коду

Сторінка налаштувань плагіна Login or Logout Menu Item в адмінці WordPress

Найпростіший спосіб додати динамічну кнопку входу й виходу, плагін Login or Logout Menu Item. Це прямий спадкоємець BAW Login/Logout Menu, написаний з нуля одним із контриб'юторів оригінального проєкту. На червень 2026 року плагін має 20 000+ активних встановлень, 23 відгуки й оцінку 4,8 зірок. Версія 1.3.2 протестована аж до WordPress 7.0.

Чому саме він, а не кодове рішення. Плагін не чіпає functions.php і не ламається при зміні теми. Він підтримує блоковий редактор, пункт «Login|Logout» додається в Navigation block через звичайний пошук. І в нього окрема сторінка налаштувань: жодних магічних URL у полях меню, все прозоро.

Встановлення та налаштування

Встановіть плагін стандартним шляхом: Plugins → Add New, введіть Login or Logout Menu Item, натисніть Install і Activate. Після активації в меню адмінки з'явиться пункт Settings → Login or Logout. Три поля, ось що вони означають:

  • Login Page URL, адреса сторінки входу. Для більшості сайтів достатньо /wp-login.php. Якщо використовуєте кастомну сторінку входу (наприклад /login/ через MemberPress або WooCommerce), вкажіть її тут.
  • Login Redirect URL, куди користувач потрапить після входу. Зазвичай /account/ або просто /, на головну. Зважте: членські плагіни на кшталт MemberPress або Restrict Content Pro можуть перевизначати цей редірект своїми налаштуваннями.
  • Logout Redirect URL, куди відправити користувача після виходу. Логічно поставити / або /wp-login.php.

Додавання пункту в меню

Зайдіть у Appearance → Menus. У правому верхньому куті натисніть Screen Options і перевірте, що чекбокс Login/Logout увімкнено. У лівій колонці з'явиться блок «Login/Logout», позначте Login|Logout і натисніть Add to Menu.

Пункт меню з'явиться в списку. Його URL має залишатися #lolmiloginout#, це тригер плагіна, не змінюйте його. Navigation Label можна відредагувати: наприклад «Увійти | Вийти» або «Особистий кабінет». Збережіть меню.

Якщо працюєте з блоковим редактором (Appearance → Editor, блок Navigation): натисніть «+» для додавання посилання, у пошуку наберіть «login» або «logout», виберіть «Login|Logout» із підказок. Посилання додасться автоматично з правильним URL. Можна вписати й вручну, #lolmiloginout#.

Що робити, якщо меню не перемикається

Найчастіша причина, кешування. Вимкніть кеш для залогінених користувачів у налаштуваннях плагіна кешування: WP Rocket, Cloudflare APO, LiteSpeed. Друга причина, інший плагін перехоплює редірект. Перевірте налаштування членського або security-плагіна: багато з них мають власні правила редіректу після логіну, і вони пріоритетніші.

Метод 2: вхід і вихід через код у functions.php

Плагін закриває більшість типових сценаріїв. Але іноді потрібна тонша логіка: різний редірект для різних ролей, примусовий вихід без підтвердження, приховування адмінпанелі. Тут на допомогу приходить functions.php.

Весь код нижче додавайте через плагін Code Snippets, це безпечніше, ніж правка functions.php напряму. Помилка в синтаксисі не покладе сайт, а просто вимкне сніпет.

Вхід із редіректом за роллю користувача

Цей код перенаправляє адміністраторів в адмінку, а всіх інших, на сторінку особистого кабінету. Додайте його в Code Snippets або в functions.php дочірньої теми.

1/**
2 * Редирект после входа: админ → wp-admin, остальные → /account
3 */
4function sd_redirect_by_role( $url, $request, $user ) {
5 if ( $user && is_object( $user ) && is_a( $user, 'WP_User' ) ) {
6 if ( $user->has_cap( 'administrator' ) ) {
7 $url = admin_url();
8 } else {
9 $url = home_url( '/account' );
10 }
11 }
12 return $url;
13}
14add_filter( 'login_redirect', 'sd_redirect_by_role', 10, 3 );

Як це працює: фільтр login_redirect спрацьовує в момент входу. Функція перевіряє роль через has_cap('administrator') і підставляє потрібний URL. Пріоритет 10, стандартний, 3 обмежує кількість прийнятих аргументів. Якщо слаг вашої сторінки кабінету відрізняється від /account, замініть його в рядку home_url('/account').

Вихід із системи без підтвердження

За замовчуванням WordPress при переході за посиланням виходу показує сторінку підтвердження: «Ви впевнені, що хочете вийти?» На мобільних пристроях це особливо дратує. Ось код, який прибирає підтвердження:

1/**
2 * Выход без подтверждения, редирект на главную
3 */
4add_action( 'check_admin_referer', 'sd_logout_without_confirm', 10, 2 );
5function sd_logout_without_confirm( $action, $result ) {
6 if ( $action === 'log-out' && ! isset( $_GET['_wpnonce'] ) ) {
7 $redirect_to = isset( $_REQUEST['redirect_to'] )
8 ? $_REQUEST['redirect_to']
9 : home_url( '/' );
10 $location = str_replace( '&', '&', wp_logout_url( $redirect_to ) );
11 header( "Location: $location" );
12 die;
13 }
14}

Перед додаванням зробіть повний бекап сайту. Функція перехоплює перевірку nonce при виході й одразу виконує редірект, минаючи сторінку підтвердження. Після встановлення перевірте: відкрийте посилання ваш-домен/wp-login.php?action=logout в режимі інкогніто, вас має викинути на головну без проміжного екрана.

Деякі security-плагіни (Wordfence, Solid Security) перевизначають поведінку виходу. Якщо підтвердження залишилося, вимкніть у їхніх налаштуваннях опцію «підтвердження виходу» або додайте URL /wp-login.php?action=logout у білий список.

Сценарій: своя сторінка входу замість wp-login.php

Якщо ви замінили стандартну сторінку входу кастомною (наприклад через MemberPress або WooCommerce), потрібно перенаправити прямий доступ до wp-login.php:

1/**
2 * Замена wp-login.php на кастомную страницу входа
3 */
4add_action( 'init', 'sd_custom_login_page' );
5function sd_custom_login_page() {
6 global $pagenow;
7 if ( ! is_user_logged_in() && 'wp-login.php' === $pagenow ) {
8 wp_redirect( home_url( '/login' ) );
9 exit;
10 }
11}

Замініть /login на слаг вашої сторінки входу. Це корисно, коли ви використовуєте плагін особистого кабінету й не хочете світити стандартну форму WordPress.

Як сховати адмінпанель для всіх, крім адміністраторів

Адмінбар WordPress угорі сайту корисний лише тим, хто керує сайтом. Звичайним користувачам він не потрібен і візуально заважає, особливо якщо ви будуєте особистий кабінет із чистим інтерфейсом.

Вимкнення адмінбару через код

Додайте в Code Snippets або functions.php дочірньої теми:

1/**
2 * Скрыть админ-бар для всех, кроме администраторов
3 */
4add_action( 'after_setup_theme', 'sd_remove_admin_bar_for_non_admins' );
5function sd_remove_admin_bar_for_non_admins() {
6 if ( ! current_user_can( 'administrator' ) && ! is_admin() ) {
7 show_admin_bar( false );
8 }
9}

Функція current_user_can('administrator') перевіряє роль, а ! is_admin() гарантує, що в самій адмінці бар залишиться, там він потрібен усім, у кого є доступ.

Блокування доступу до wp-admin

Сховати бар недостатньо. Потрібно ще й закрити доступ до /wp-admin/ для тих, кому він не потрібен:

1/**
2 * Закрыть доступ к wp-admin для не-администраторов
3 */
4add_action( 'admin_init', 'sd_block_wp_admin_for_non_admins' );
5function sd_block_wp_admin_for_non_admins() {
6 if ( ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
7 wp_redirect( home_url( '/restrict_user' ) );
8 exit;
9 }
10}

Умова DOING_AJAX критично важлива: без неї ви заблокуєте AJAX-запити від плагінів особистого кабінету, які користувачі мають виконувати зі свого профілю. Сторінку /restrict_user замініть на будь-яку сторінку-заглушку, наприклад, головну або сторінку з повідомленням «Доступ заборонено».

⁉️🤔 Часті питання

Плагін Login or Logout Menu Item не працює з PHP 8.0, що робити?

На WordPress.org є один негативний відгук про несумісність із PHP 8.0 від січня 2026 року. При цьому плагін протестовано до WP 7.0, а 20 000+ активних встановлень підтверджують стабільну роботу на сучасних версіях PHP. Якщо зіткнулися з помилкою: перевірте версію плагіна (має бути 1.3.2), вимкніть інші плагіни редіректу, очистіть кеш. На тестовому сайті з PHP 8.2 проблем не виявлено.

Чи можна обійтися без плагіна, тільки кодом?

Так. Метод 2 у цій статті повністю закриває вхід, вихід і редіректи через functions.php. Плагін зручніший: налаштування з адмінки без правки файлів, підтримка блокового редактора, автооновлення. Якщо сайт простий і потрібна лише кнопка входу й виходу, беріть плагін. Якщо логіка складна: різні редіректи за ролями, кілька сторінок входу, використовуйте код.

Що робити, якщо пункт меню не з'являється в блоковому редакторі?

У Navigation block натисніть «+» і в пошуку наберіть «login» (не «lolmiloginout»). Якщо пункт не з'являється, перевірте, що плагін активний і версія WordPress не нижча за 6.0. Для старих тем без блокового редактора використовуйте класичний інтерфейс Appearance → Menus.

Як налаштувати редірект для різних ролей через плагін?

Login or Logout Menu Item не розрізняє ролі, він робить один редірект для всіх користувачів. Для різного редіректу за ролями візьміть код із методу 2: функція sd_redirect_by_role працює, навіть якщо пункт меню додано через плагін. Фільтр login_redirect виконується після редіректу плагіна й перевизначає його.

Чому сторінка підтвердження виходу все одно показується?

Деякі security-плагіни (Wordfence, Solid Security) перевизначають поведінку виходу на своєму рівні. Вимкніть у їхніх налаштуваннях опцію підтвердження виходу або додайте URL виходу в білий список. Код із методу 2 спрацьовує раніше за більшість плагінів, але не за всі, в окремих випадках може знадобитися налаштування самого security-плагіна.

Чим WP-Recall відрізняється від Login or Logout Menu Item?

WP-Recall — це повноцінний плагін особистого кабінету: профілі, особисті повідомлення, групи, commerce-модулі. Вхід і вихід там вбудовані як частина екосистеми. Login or Logout Menu Item вирішує рівно одну задачу: динамічна кнопка входу-виходу в меню. Якщо вам потрібен цілий особистий кабінет із безліччю функцій, дивіться в бік WP-Recall або MemberPress. Якщо тільки кнопка в меню, Login or Logout Menu Item легший і не тягне за собою зайвого.

Що ставити на ваш сайт: плагін чи код

Швидке рішення для типового сайту, плагін Login or Logout Menu Item. Поставили, заповнили три поля в Settings, додали пункт у меню. Усе працює за п'ять хвилин. Двадцять тисяч активних встановлень і сумісність із WP 7.0 підтверджують: інструмент зрілий і підтримуваний.

Якщо логіка входу нетривіальна, різні редіректи для різних ролей, інтеграція з членським плагіном, кастомна сторінка входу, використовуйте код із методу 2. Він гнучкіший, але вимагає обережності. Пишіть код через Code Snippets, а не напряму у файл теми. Одна помилка в functions.php, і сайт лежить.

Зв'язка плагіна для меню й коду для редіректів, компроміс, який ми використовуємо на більшості проєктів. Плагін дає зручне керування пунктом меню й підтримку блокового редактора. А кастомний код закриває специфічні вимоги щодо ролей і редіректів, не ускладнюючи налаштування плагіна.

Вибирайте під свою задачу, а не під чужий чекліст. Для простого сайту з членською зоною вистачить плагіна. Для маркетплейса або освітньої платформи код обов'язковий. У будь-якому разі, тримайте бекап перед правками й тестуйте на staging-копії.