Błąd logowania do wp-admin – pętla logowania, brak maila resetującego
Wpisujesz login i hasło, klikasz „Zaloguj się”, strona mruga i wracasz na ten sam formularz. Bez komunikatu o błędzie, bez wyjaśnienia. Klikasz „Nie pamiętasz hasła?”, mail nie przychodzi. Po dziesięciu minutach zaczynasz się zastanawiać, czy ktoś przejął Twoją stronę.
Zwykle nie przejął. W mojej praktyce brak dostępu do panelu WordPressa w zdecydowanej większości przypadków wynika z czterech rzeczy: ciasteczek, pamięci podręcznej, wtyczki bezpieczeństwa albo niedziałającej poczty. Poniżej pokazuję ścieżkę diagnostyczną, którą sam przechodzę krok po kroku, od najprostszych rzeczy do grzebania w bazie danych. Każdy krok kończy się konkretnym wnioskiem: albo to jest przyczyna, albo idziesz dalej.
Cztery scenariusze, które wyglądają podobnie
Zanim zaczniesz naprawiać, nazwij dokładnie to, co widzisz. To skraca diagnozę o połowę.
- Pętla logowania. Formularz przyjmuje dane, strona się przeładowuje i znowu widzisz formularz. Brak komunikatu o błędnym haśle. To najczęściej ciasteczka albo cache.
- Błąd: nieprawidłowa nazwa użytkownika lub hasło. WordPress odpowiada konkretnie. Tu problem leży po stronie danych logowania albo konta użytkownika.
- Komunikat o zablokowanych ciasteczkach. WordPress wprost informuje, że przeglądarka nie przyjmuje ciasteczek. Bardzo wąski trop, łatwy do sprawdzenia.
- Logujesz się poprawnie, ale panel jest pusty albo wyrzuca Cię z powrotem. To już kwestia uprawnień, wtyczek lub motywu.
Jeśli zamiast formularza logowania widzisz całkiem inny ekran, na przykład białą stronę albo komunikat o błędzie krytycznym, to inna historia. Opisałem ją osobno we wpisach o białej stronie śmierci oraz o błędzie krytycznym WordPressa.
Zanim zaczniesz: pięć minut przygotowania
Nie zaczynaj od zmieniania plików. Najpierw upewnij się, że masz drogę odwrotu.
- Sprawdź, czy masz dostęp do panelu hostingu. Będzie potrzebny do menedżera plików, FTP i phpMyAdmin. Jeśli nie masz do niego hasła, zacznij od jego odzyskania, bo bez tego część kroków odpadnie.
- Zrób kopię zapasową. Pliki i baza danych. Większość hostingów w Polsce ma to w panelu jako jeden przycisk.
- Zanotuj, co zmieniałeś w ciągu ostatnich 48 godzin. Aktualizacja wtyczki, zmiana adresu na HTTPS, przeniesienie strony, instalacja wtyczki bezpieczeństwa, zmiana ustawień w Cloudflare. To zwykle jest winowajca.
Krok 1: wyklucz przeglądarkę
Brzmi banalnie, ale połowa zgłoszeń kończy się właśnie tutaj.
Otwórz okno prywatne, czyli tryb incognito, i wejdź na adres twojadomena.pl/wp-login.php. Jeśli logowanie działa w incognito, a nie działa w normalnym oknie, przyczyną są dane zapisane w przeglądarce. Wyczyść ciasteczka i pamięć podręczną dla swojej domeny, wyloguj się ze wszystkich sesji i spróbuj ponownie.
Sprawdź też trzy rzeczy:
- Czy wchodzisz na dokładnie ten adres, pod którym działa strona. Wersja z
wwwi bezwwwto dla ciasteczek dwie różne domeny. - Czy adres zaczyna się od
https://, jeśli strona ma certyfikat. Logowanie przezhttpna stronie wymuszającej HTTPS to klasyczna przyczyna pętli. Więcej o tym, jak zachowuje się strona z problemami certyfikatu, piszę we wpisie o braku certyfikatu SSL. - Czy przeglądarka ma włączone ciasteczka i czy nie blokuje ich rozszerzenie do prywatności. Wyłącz tymczasowo blokery i spróbuj jeszcze raz.
Test kontrolny: spróbuj zalogować się z innego urządzenia i z innej sieci, na przykład z telefonu na transmisji komórkowej. Jeśli tam działa, problem jest lokalny i dalej możesz nie szukać.
Krok 2: pętla logowania i ciasteczka sesji
Jeśli wracasz na formularz także w incognito i z innego urządzenia, WordPress nie potrafi zapisać ciasteczka sesji. Dzieje się tak zwykle wtedy, gdy adres strony zapisany w bazie nie zgadza się z adresem, pod którym faktycznie jesteś.
Najpierw sprawdź plik wp-config.php przez FTP lub menedżera plików w panelu hostingu. Szukaj linii z WP_HOME i WP_SITEURL. Jeśli są, muszą zawierać dokładnie ten sam adres, którego używasz w przeglądarce, razem z protokołem i z www lub bez.
define('WP_HOME', 'https://twojadomena.pl');
define('WP_SITEURL', 'https://twojadomena.pl');
Jeśli tych linii nie ma, adres siedzi w bazie danych. Wejdź w phpMyAdmin, otwórz tabelę wp_options i sprawdź wiersze siteurl oraz home. Uwaga: przedrostek tabeli nie zawsze brzmi wp_, bywa losowy, więc kieruj się nazwą options na końcu.
Gdy adresy się zgadzają, a pętla trwa, dodaj tymczasowo do wp-config.php, powyżej linii z komentarzem o zaprzestaniu edycji:
define('COOKIE_DOMAIN', false);
To wyłącza sztywne przypisanie ciasteczka do domeny i bardzo często rozwiązuje pętlę po migracji albo po przejściu na HTTPS. Jeśli pomogło, zostaw tę linię albo uporządkuj adresy w bazie i ją usuń.
Sprawdź jeszcze, czy w wp-config.php nie ma wpisu FORCE_SSL_ADMIN ustawionego na true na stronie, która nie ma działającego certyfikatu. To gwarantowana pętla.
Krok 3: cache i CDN
Druga najczęstsza przyczyna pętli. Wtyczka cache albo serwer proxy zapisuje w pamięci podręcznej stronę logowania razem z jednorazowym tokenem bezpieczeństwa. Token wygasa, a WordPress odrzuca formularz i odsyła Cię z powrotem.
Co zrobić:
- Wyczyść całą pamięć podręczną: wtyczkę cache, cache po stronie serwera w panelu hostingu, cache w Cloudflare lub innym CDN.
- Jeśli korzystasz z Cloudflare, włącz na chwilę tryb deweloperski, który wyłącza cache na kilka godzin.
- Upewnij się, że ścieżki
/wp-admin/i/wp-login.phpsą wykluczone z pamięci podręcznej. To standard, ale po ręcznej konfiguracji reguł potrafi zniknąć. - Jeśli nie masz dostępu do panelu, wyłącz wtyczkę cache przez FTP, zmieniając nazwę jej folderu w
/wp-content/plugins/. Usuń też plikiadvanced-cache.phpiobject-cache.phpz folderu/wp-content/, jeśli tam są.
Krok 4: wtyczki i motyw
Skoro cache odpada, sprawdź resztę. Najszybsza metoda to wyłączenie wszystkiego naraz.
Przez FTP lub menedżera plików zmień nazwę folderu /wp-content/plugins/ na /wp-content/plugins-off/. WordPress przestanie widzieć wtyczki i automatycznie je dezaktywuje. Spróbuj się zalogować.
Jeśli wejście do panelu się udało, przywróć nazwę folderu na plugins. Wszystkie wtyczki będą wyłączone, a Ty włączysz je pojedynczo, sprawdzając po każdej, czy nadal możesz się zalogować w drugiej przeglądarce. Ta, po której logowanie pada, jest winna.
Jeśli wyłączenie wtyczek nie pomogło, zrób to samo z motywem: zmień nazwę jego folderu w /wp-content/themes/. WordPress przełączy się na motyw domyślny, o ile jest zainstalowany.
Krok 5: dlaczego nie przychodzi mail resetujący hasło
To osobny problem i warto go rozwiązać niezależnie, bo brak działającej poczty uderzy w Ciebie także przy powiadomieniach o zamówieniach.
Typowe przyczyny, od najczęstszej:
- Mail trafił do spamu. Sprawdź folder spam i wszystkie zakładki w skrzynce.
- Hosting blokuje funkcję wysyłki PHP. Coraz więcej firm wyłącza ją domyślnie i wymaga SMTP. Wtedy WordPress uważa, że wysłał wiadomość, a ona nigdy nie opuszcza serwera.
- Adres nadawcy nie pasuje do domeny i filtry odbiorcy odrzucają wiadomość. To ten sam mechanizm, który opisuję we wpisie o tym, dlaczego maile ze sklepu trafiają do spamu.
- Adres e-mail konta jest nieaktualny. Skrzynka po byłym pracowniku, literówka, domena, która wygasła.
- Wtyczka bezpieczeństwa wyłączyła reset hasła. Niektóre mają taką opcję i po jej włączeniu formularz odzyskiwania po prostu nic nie robi.
Praktyczny wniosek: nie czekaj na mail. Ustaw hasło ręcznie, a kwestię poczty napraw później, spokojnie, konfigurując wysyłkę przez SMTP. Jeśli prowadzisz sklep, zajrzyj też do wpisu o tym, co robić, gdy sklep nie wysyła maili z potwierdzeniem zamówienia.
Krok 6: reset hasła bez dostępu do maila
Masz dwie sensowne drogi. Obie wymagają dostępu do panelu hostingu.
Przez phpMyAdmin
Wejdź w phpMyAdmin, wybierz bazę danych swojej strony i otwórz tabelę wp_users. Znajdź swojego użytkownika, kliknij „Edytuj” i w polu user_pass wpisz nowe hasło, a w kolumnie obok wybierz funkcję MD5. Zapisz.
WordPress przy pierwszym poprawnym logowaniu sam przeliczy hasło na bezpieczniejszy format. Po zalogowaniu od razu ustaw normalne hasło w swoim profilu.
Jeśli phpMyAdmin w ogóle się nie otwiera albo strona zgłasza problem z bazą, zajrzyj do wpisu o błędzie nawiązywania połączenia z bazą danych, bo wtedy diagnoza idzie zupełnie inną ścieżką.
Przez tymczasowy plik w mu-plugins
Jeśli wolisz nie dotykać bazy, utwórz folder /wp-content/mu-plugins/, a w nim plik reset-tymczasowy.php o treści:
<?php
add_action('init', function () {
$user = get_user_by('login', 'twoj_login');
if ($user) {
wp_set_password('NoweTrudneHaslo2026', $user->ID);
}
});
Wejdź raz na stronę główną, zaloguj się nowym hasłem, a potem natychmiast usuń ten plik. Zostawienie go oznacza, że hasło będzie się resetowało przy każdym wejściu na stronę, a plik stanie się otwartą furtką dla każdego, kto go znajdzie.
Gdy nie masz nawet konta administratora
W tabeli wp_users możesz dodać nowego użytkownika, ale samo to nie wystarczy. Uprawnienia siedzą w tabeli wp_usermeta, w polach wp_capabilities i wp_user_level. Jeśli Twoja instalacja ma inny przedrostek tabel, na przykład xy7_, to te pola muszą się nazywać xy7_capabilities i xy7_user_level. Niezgodność przedrostka to najczęstszy powód, dla którego nowe konto loguje się, ale panel jest pusty.
Krok 7: logujesz się, ale panel jest pusty lub wyrzuca Cię z powrotem
Hasło działa, WordPress Cię wpuszcza, a Ty widzisz pustą stronę albo tylko fragment panelu. Sprawdź po kolei:
- Uprawnienia konta. Twoja rola mogła zostać zmieniona z administratora na subskrybenta. Wtedy panel jest ubogi, ale technicznie działa. Weryfikacja przez
wp_usermeta, tak jak wyżej. - Limit pamięci PHP. Panel jest cięższy niż strona publiczna i potrafi paść jako pierwszy. Dodaj w
wp-config.phpliniędefine('WP_MEMORY_LIMIT', '256M');i sprawdź ponownie. - Uszkodzone pliki rdzenia. Pobierz czystą paczkę WordPressa w tej samej wersji i wgraj przez FTP foldery
wp-adminorazwp-includes, nadpisując istniejące. Nie ruszaj folderuwp-contentani plikuwp-config.php.
Krok 8: blokady bezpieczeństwa
Jeśli po kilku próbach zamiast formularza widzisz komunikat o zablokowanym dostępie albo strona przestała się otwierać tylko dla Ciebie, prawdopodobnie sam siebie zablokowałeś.
- Limit prób logowania. Wtyczki bezpieczeństwa blokują adres IP po kilku nieudanych próbach. Blokada zwykle mija po kilkunastu minutach lub godzinie. Możesz też zmienić IP, przełączając się na transmisję komórkową w telefonie.
- Zmieniony adres logowania. Część wtyczek ukrywa
wp-login.phppod własnym adresem. Jeśli go nie pamiętasz, wyłącz wtyczkę przez FTP, a standardowy adres wróci. - Dwuskładnikowe uwierzytelnianie. Zmiana telefonu albo usunięcie aplikacji z kodami odcina dostęp. Ratunkiem są kody zapasowe, a jeśli ich nie masz, wyłączenie wtyczki przez FTP.
- Reguły w pliku
.htaccess. Sprawdź, czy nie ma tam wpisu ograniczającego dostęp do panelu do jednego adresu IP, który już się zmienił. RegułyRequire iplubdeny from allw sekcji dotyczącejwp-adminto typowy trop. - Blokada po stronie serwera. Systemy typu ModSecurity potrafią odrzucić żądanie logowania z błędem 403. Tego nie zdiagnozujesz z poziomu WordPressa, tu pomoże wsparcie hostingu.
Krok 9: kiedy podejrzewać włamanie
Są sygnały, przy których przestaję szukać przyczyny technicznej i traktuję sprawę jako incydent bezpieczeństwa:
- Twoje hasło przestało działać z dnia na dzień, choć nikt go nie zmieniał.
- W tabeli
wp_usersjest konto administratora, którego nie zakładałeś. - Adres e-mail konta administratora został podmieniony.
- Strona przekierowuje odwiedzających na obce witryny albo Google oznaczył ją jako niebezpieczną.
- W logach serwera widać setki prób logowania z różnych adresów IP.
W takiej sytuacji samo odzyskanie hasła niczego nie załatwia, bo napastnik zwykle zostawia furtkę w plikach. Pełną procedurę opisałem we wpisie o tym, jak odwirusować stronę WordPress.
Szybka tabela: objaw i pierwszy ruch
| Co widzisz | Najbardziej prawdopodobna przyczyna | Pierwszy ruch |
|---|---|---|
| Wracasz na formularz bez komunikatu | Ciasteczka lub cache | Tryb incognito, wyczyszczenie cache, sprawdzenie adresu strony |
| Komunikat o zablokowanych ciasteczkach | Niezgodność domeny lub protokołu | Weryfikacja WP_HOME i WP_SITEURL, wpis COOKIE_DOMAIN |
| Nieprawidłowa nazwa użytkownika lub hasło | Złe dane albo zmienione konto | Reset hasła przez phpMyAdmin |
| Mail resetujący nie przychodzi | Wyłączona wysyłka poczty na hostingu | Ustawienie hasła ręcznie, potem konfiguracja SMTP |
| Komunikat o zablokowanym dostępie | Wtyczka bezpieczeństwa lub reguła w .htaccess | Odczekanie, zmiana IP, wyłączenie wtyczki przez FTP |
| Logujesz się, ale panel jest pusty | Uprawnienia, limit pamięci lub uszkodzone pliki | Sprawdzenie wp_usermeta, podniesienie limitu pamięci |
| Nieznane konto administratora w bazie | Włamanie | Odcięcie strony i pełne czyszczenie |
Czego nie robić
Cztery rzeczy, które regularnie pogarszają sytuację:
- Nie instaluj WordPressa od nowa na tej samej bazie. Można stracić całą zawartość strony, a problem z logowaniem zwykle i tak zostaje.
- Nie kasuj folderu
wp-content. To tam siedzą Twoje zdjęcia, motyw i wtyczki. Reinstalacja dotyczy wyłączniewp-adminiwp-includes. - Nie zostawiaj plików ratunkowych. Skrypt resetujący hasło w
mu-pluginsusuwasz od razu po użyciu, nie „jutro”. - Nie próbuj w nieskończoność. Kolejne nieudane logowania przedłużają blokadę adresu IP i mylą diagnozę.
Jak nie wracać do tego problemu
Trzy nawyki, które w praktyce eliminują większość takich sytuacji:
- Drugie konto administratora z innym adresem e-mail, na skrzynce w innej domenie. Kosztuje minutę, a ratuje dzień.
- Poczta wysyłana przez SMTP zamiast przez domyślną funkcję PHP. Dzięki temu reset hasła i powiadomienia z zamówień faktycznie docierają.
- Kody zapasowe do uwierzytelniania dwuskładnikowego zapisane w menedżerze haseł, nie tylko w aplikacji na telefonie.
Warto też wiedzieć, że problem z logowaniem rzadko chodzi sam. Zwykle jest objawem czegoś szerszego: zaniedbanych aktualizacji, źle skonfigurowanego cache albo przeciążonego hostingu. Zebrałem te wątki we wpisie o najczęstszych przyczynach awarii strony internetowej.
Kiedy przestać kombinować i poprosić o pomoc
Odpuść samodzielne grzebanie, jeśli zachodzi choć jedno:
- nie masz dostępu do FTP ani do panelu hostingu,
- strona zarabia i każda godzina przestoju kosztuje Cię pieniądze,
- podejrzewasz włamanie,
- nie masz świeżej kopii zapasowej, więc każdy błąd może być nieodwracalny.
W takich przypadkach szybciej i taniej wychodzi oddanie tego komuś, kto robi to na co dzień. Zajmuję się awariami i bezpieczeństwem stron WordPress oraz sklepów WooCommerce. Jeśli nie możesz dostać się do swojego panelu, napisz do mnie, przywrócę Ci dostęp i sprawdzę, co było realną przyczyną, żeby to się nie powtórzyło.
Nie chcesz robić tego samodzielnie?
Zajmę się tym za Ciebie. Napisz krótko, co się dzieje - odpowiem tego samego dnia roboczego.