Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

🔐 Przycisk logowania i wylogowania w menu WordPress: poradnik krok po kroku 2026

🔐 Przycisk logowania i wylogowania w menu WordPress: poradnik krok po kroku 2026

Standardowy WordPress nie potrafi wyświetlić przycisku „Zaloguj się" dla niezalogowanych gości i „Wyloguj się" dla zalogowanych w tym samym miejscu menu. Na pierwszy rzut oka to drobiazg. Jednak dla witryny z kontem klienta, strefą członkowską czy forum jest to podstawowa potrzeba, bez której nawigacja zamienia się w grę przygodową.

Wcześniej zadanie to realizowała wtyczka BAW Login/Logout Menu. Autor zamknął projekt w 2025 roku i tysiące stron zostały bez aktualizacji. Jej miejsce zajął bezpośredni następca, Login or Logout Menu Item z ponad 20 000 aktywnych instalacji i oceną 4,8 na WordPress.org.

Zebraliśmy wszystko w jednym poradniku: od instalacji wtyczki w dwie minuty po niestandardowe przekierowania według ról i wyłączenie paska administracyjnego dla zwykłych użytkowników.

💡 Szybki przegląd:

  • Zainstaluj wtyczkę Login or Logout Menu Item i skonfiguruj trzy pola przekierowania
  • Dodaj pozycję „Login|Logout" do menu witryny za pomocą klasycznego lub blokowego edytora
  • Skonfiguruj zaawansowaną logikę przez fragmenty kodu w functions.php: przekierowanie według ról, wylogowanie bez potwierdzenia, zastąpienie wp-login.php
  • Ukryj panel administracyjny przed zwykłymi użytkownikami i zablokuj im dostęp do wp-admin

Metoda 1: wtyczka Login or Logout Menu Item, szybko i bez kodu

Strona ustawień wtyczki Login or Logout Menu Item w panelu administracyjnym WordPress

Najprostszy sposób na dodanie dynamicznego przycisku logowania i wylogowania to wtyczka Login or Logout Menu Item. Jest to bezpośredni następca BAW Login/Logout Menu, napisany od podstaw przez jednego z kontrybutorów oryginalnego projektu. Na czerwiec 2026 roku wtyczka ma ponad 20 000 aktywnych instalacji, 23 opinie i ocenę 4,8 gwiazdki. Wersja 1.3.2 jest przetestowana aż do WordPress 7.0.

Dlaczego właśnie ona, a nie rozwiązanie kodowe. Wtyczka nie ingeruje w functions.php i nie psuje się przy zmianie motywu. Obsługuje edytor blokowy, pozycję „Login|Logout" dodaje się do bloku Nawigacji przez zwykłe wyszukiwanie. Ma też osobną stronę ustawień: żadnych magicznych adresów URL w polach menu, wszystko jest przejrzyste.

Instalacja i konfiguracja

Zainstaluj wtyczkę standardową ścieżką: Wtyczki → Dodaj nową, wpisz Login or Logout Menu Item, kliknij Zainstaluj i Włącz. Po aktywacji w menu administracyjnym pojawi się pozycja Ustawienia → Login or Logout. Trzy pola, oto co oznaczają:

  • Login Page URL, adres strony logowania. Dla większości witryn wystarczy /wp-login.php. Jeśli używasz niestandardowej strony logowania (na przykład /login/ przez MemberPress lub WooCommerce), wskaż ją tutaj.
  • Login Redirect URL, dokąd użytkownik trafi po zalogowaniu. Zazwyczaj /account/ lub po prostu /, na stronę główną. Proszę wziąć pod uwagę: wtyczki członkowskie takie jak MemberPress lub Restrict Content Pro mogą nadpisywać to przekierowanie swoimi ustawieniami.
  • Logout Redirect URL, dokąd wysłać użytkownika po wylogowaniu. Logicznie jest ustawić / lub /wp-login.php.

Dodawanie pozycji do menu

Przejdź do Wygląd → Menu. W prawym górnym rogu kliknij Opcje ekranu i sprawdź, czy pole wyboru Login/Logout jest włączone. W lewej kolumnie pojawi się blok „Login/Logout", zaznacz Login|Logout i kliknij Dodaj do menu.

Pozycja menu pojawi się na liście. Jej adres URL powinien pozostać #lolmiloginout#, to jest wyzwalacz wtyczki, proszę go nie zmieniać. Etykietę nawigacji można edytować: na przykład „Zaloguj | Wyloguj" lub „Konto klienta". Zapisz menu.

Jeśli pracujesz z edytorem blokowym (Wygląd → Edytor, blok Nawigacja): kliknij „+", aby dodać odnośnik, w wyszukiwaniu wpisz „login" lub „logout", wybierz „Login|Logout" z podpowiedzi. Odnośnik zostanie dodany automatycznie z prawidłowym adresem URL. Można też wpisać go ręcznie, #lolmiloginout#.

Co zrobić, jeśli menu się nie przełącza

Najczęstsza przyczyna to buforowanie. Wyłącz pamięć podręczną dla zalogowanych użytkowników w ustawieniach wtyczki buforującej: WP Rocket, Cloudflare APO, LiteSpeed. Druga przyczyna: inna wtyczka przechwytuje przekierowanie. Sprawdź ustawienia wtyczki członkowskiej lub bezpieczeństwa: wiele z nich ma własne reguły przekierowania po logowaniu i mają one wyższy priorytet.

Metoda 2: logowanie i wylogowanie przez kod w functions.php

Wtyczka pokrywa większość typowych scenariuszy. Czasami jednak potrzebna jest bardziej zaawansowana logika: różne przekierowanie dla różnych ról, wymuszone wylogowanie bez potwierdzenia, ukrycie panelu administracyjnego. Tutaj z pomocą przychodzi functions.php.

Cały poniższy kod proszę dodawać przez wtyczkę Code Snippets, jest to bezpieczniejsze niż bezpośrednia edycja functions.php. Błąd składni nie położy witryny, a po prostu wyłączy fragment kodu.

Logowanie z przekierowaniem według roli użytkownika

Ten kod przekierowuje administratorów do panelu administracyjnego, a wszystkich pozostałych na stronę konta klienta. Proszę dodać go w Code Snippets lub w functions.php motywu potomnego.

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 );

Jak to działa: filtr login_redirect uruchamia się w momencie logowania. Funkcja sprawdza rolę przez has_cap('administrator') i podstawia odpowiedni adres URL. Priorytet 10, standardowy, 3 ogranicza liczbę przyjmowanych argumentów. Jeśli slug Pana/Pani strony konta różni się od /account, proszę go zastąpić w wierszu home_url('/account').

Wylogowanie z systemu bez potwierdzenia

Domyślnie WordPress po kliknięciu odnośnika wylogowania pokazuje stronę potwierdzenia: „Czy na pewno chcesz się wylogować?" Na urządzeniach mobilnych jest to szczególnie irytujące. Oto kod, który usuwa potwierdzenie:

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}

Przed dodaniem proszę wykonać pełną kopię zapasową witryny. Funkcja przechwytuje sprawdzanie nonce przy wylogowaniu i natychmiast wykonuje przekierowanie, omijając stronę potwierdzenia. Po instalacji proszę sprawdzić: otwórz odnośnik ваш-домен/wp-login.php?action=logout w trybie incognito, powinno Pana/Panią przenieść na stronę główną bez ekranu pośredniego.

Niektóre wtyczki bezpieczeństwa (Wordfence, Solid Security) nadpisują zachowanie wylogowania. Jeśli potwierdzenie pozostało, proszę wyłączyć w ich ustawieniach opcję „potwierdzenia wylogowania" lub dodać adres URL /wp-login.php?action=logout do białej listy.

Scenariusz: własna strona logowania zamiast wp-login.php

Jeśli zastąpił Pan/Pani standardową stronę logowania niestandardową (na przykład przez MemberPress lub WooCommerce), należy przekierować bezpośredni dostęp do 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}

Proszę zastąpić /login slugiem swojej strony logowania. Jest to przydatne, gdy używa Pan/Pani wtyczki konta klienta i nie chce eksponować standardowego formularza WordPress.

Jak ukryć panel administracyjny dla wszystkich oprócz administratorów

Pasek administracyjny WordPress na górze witryny jest przydatny tylko dla osób zarządzających stroną. Zwykłym użytkownikom nie jest potrzebny i wizualnie przeszkadza, szczególnie jeśli buduje Pan/Pani konto klienta z czystym interfejsem.

Wyłączenie paska administracyjnego przez kod

Proszę dodać w Code Snippets lub functions.php motywu potomnego:

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}

Funkcja current_user_can('administrator') sprawdza rolę, a ! is_admin() gwarantuje, że w samym panelu administracyjnym pasek pozostanie, tam jest potrzebny wszystkim, którzy mają dostęp.

Blokowanie dostępu do wp-admin

Ukrycie paska to za mało. Trzeba jeszcze zamknąć dostęp do /wp-admin/ dla tych, którzy go nie potrzebują:

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}

Warunek DOING_AJAX jest krytycznie ważny: bez niego zablokuje Pan/Pani żądania AJAX od wtyczek konta klienta, które użytkownicy muszą wykonywać ze swojego profilu. Stronę /restrict_user proszę zastąpić dowolną stroną zastępczą, na przykład główną lub stroną z komunikatem „Dostęp zabroniony".

⁉️🤔 Często zadawane pytania

Wtyczka Login or Logout Menu Item nie działa z PHP 8.0, co robić?

Na WordPress.org jest jedna negatywna opinia o niekompatybilności z PHP 8.0 ze stycznia 2026 roku. Jednocześnie wtyczka jest przetestowana do WP 7.0, a ponad 20 000 aktywnych instalacji potwierdza stabilną pracę na nowoczesnych wersjach PHP. Jeśli napotkał Pan/Pani błąd: proszę sprawdzić wersję wtyczki (powinna być 1.3.2), wyłączyć inne wtyczki przekierowujące, wyczyścić pamięć podręczną. Na testowej witrynie z PHP 8.2 nie stwierdzono problemów.

Czy można obejść się bez wtyczki, tylko kodem?

Tak. Metoda 2 w tym artykule w pełni realizuje logowanie, wylogowanie i przekierowania przez functions.php. Wtyczka jest wygodniejsza: ustawienia z panelu administracyjnego bez edycji plików, obsługa edytora blokowego, automatyczne aktualizacje. Jeśli witryna jest prosta i potrzebny jest tylko przycisk logowania i wylogowania, proszę wybrać wtyczkę. Jeśli logika jest złożona: różne przekierowania według ról, kilka stron logowania, proszę użyć kodu.

Co zrobić, jeśli pozycja menu nie pojawia się w edytorze blokowym?

W bloku Nawigacja proszę kliknąć „+" i w wyszukiwaniu wpisać „login" (nie „lolmiloginout"). Jeśli pozycja się nie pojawia, proszę sprawdzić, czy wtyczka jest aktywna i czy wersja WordPress nie jest niższa niż 6.0. Dla starych motywów bez edytora blokowego proszę użyć klasycznego interfejsu Wygląd → Menu.

Jak skonfigurować przekierowanie dla różnych ról przez wtyczkę?

Login or Logout Menu Item nie rozróżnia ról, wykonuje jedno przekierowanie dla wszystkich użytkowników. Do różnych przekierowań według ról proszę użyć kodu z metody 2: funkcja sd_redirect_by_role działa, nawet jeśli pozycja menu jest dodana przez wtyczkę. Filtr login_redirect jest wykonywany po przekierowaniu wtyczki i nadpisuje je.

Dlaczego strona potwierdzenia wylogowania i tak się pokazuje?

Niektóre wtyczki bezpieczeństwa (Wordfence, Solid Security) nadpisują zachowanie wylogowania na swoim poziomie. Proszę wyłączyć w ich ustawieniach opcję potwierdzenia wylogowania lub dodać adres URL wylogowania do białej listy. Kod z metody 2 działa przed większością wtyczek, ale nie przed wszystkimi, w pojedynczych przypadkach może być konieczna konfiguracja samej wtyczki bezpieczeństwa.

Czym WP-Recall różni się od Login or Logout Menu Item?

WP-Recall to pełnoprawna wtyczka konta klienta: profile, prywatne wiadomości, grupy, moduły commerce. Logowanie i wylogowanie są tam wbudowane jako część ekosystemu. Login or Logout Menu Item rozwiązuje dokładnie jedno zadanie: dynamiczny przycisk logowania i wylogowania w menu. Jeśli potrzebuje Pan/Pani całego konta klienta z mnóstwem funkcji, proszę spojrzeć w stronę WP-Recall lub MemberPress. Jeśli tylko przycisk w menu, Login or Logout Menu Item jest lżejszy i nie ciągnie za sobą zbędnych elementów.

Co zastosować na swojej stronie: wtyczkę czy kod

Szybkie rozwiązanie dla typowej witryny to wtyczka Login or Logout Menu Item. Instaluje Pan/Pani, wypełnia trzy pola w Ustawieniach, dodaje pozycję do menu. Wszystko działa w pięć minut. Dwadzieścia tysięcy aktywnych instalacji i kompatybilność z WP 7.0 potwierdzają: narzędzie jest dojrzałe i wspierane.

Jeśli logika logowania jest nietrywialna, różne przekierowania dla różnych ról, integracja z wtyczką członkowską, niestandardowa strona logowania, proszę użyć kodu z metody 2. Jest on bardziej elastyczny, ale wymaga ostrożności. Proszę pisać kod przez Code Snippets, a nie bezpośrednio w pliku motywu. Jeden błąd w functions.php i witryna leży.

Połączenie wtyczki do menu i kodu do przekierowań to kompromis, który stosujemy w większości projektów. Wtyczka daje wygodne zarządzanie pozycją menu i obsługę edytora blokowego. A niestandardowy kod realizuje specyficzne wymagania dotyczące ról i przekierowań, nie komplikując ustawień wtyczki.

Proszę wybierać pod swoje zadanie, a nie pod cudzą listę kontrolną. Dla prostej witryny ze strefą członkowską wystarczy wtyczka. Dla marketplace'u lub platformy edukacyjnej kod jest obowiązkowy. W każdym razie proszę trzymać kopię zapasową przed zmianami i testować na kopii stagingowej.