Header to pierwszy element, który widzi użytkownik, i jeden z najczęstszych źródeł frustracji przy pracy z WordPress. Sticky header nie przykleja się przy scrollowaniu, menu znika po aktualizacji, a nagłówek zasłania treść strony. W tym przewodniku łączymy w jednym miejscu trzy kategorie problemów: lepkość, nawigację i pozycjonowanie. Pokazujemy konkretne rozwiązania CSS, ścieżki w panelu i diagnostykę w DevTools, z uwzględnieniem motywów blokowych WordPress 6.x oraz popularnych builderów.
Krótka odpowiedź
Sticky header nie działa najczęściej przez brak właściwości position: sticky lub zbyt niski z-index w CSS. Menu nie wyświetla się, gdy nie jest przypisane do lokalizacji motywu (Wygląd > Menu > Lokalizacja) lub JavaScript jest blokowany przez wtyczkę cache.
Header nakłada się na treść, gdy brak padding-top na elemencie body/main równego wysokości headera. Diagnozuj w DevTools przeglądarki (F12).
Usługi KC Mobile
Sprawdź naszą ofertę
Potrzebujesz pomocy specjalisty? Skorzystaj z naszych usług i rozwiń swój biznes online.
Najczęstsze problemy z headerem w WordPress – przegląd 3 kategorii
Problemy z nagłówkiem dzielą się na trzy wyraźne grupy, a ustalenie kategorii to połowa rozwiązania.
1. Sticky header (lepkość) – nagłówek nie przykleja się do góry ekranu przy przewijaniu, miga, znika albo przykleja się tylko częściowo. Źródłem jest zwykle CSS: brak `position: sticky`, nadpisany kontener nadrzędny lub błędny `z-index`.
2. Menu i nawigacja – menu nie wyświetla się wcale, nie jest przypisane do lokalizacji motywu, hamburger na mobile nie reaguje na dotyk, albo zmiany w menu się nie zapisują. To najczęściej kwestia konfiguracji, konfliktu wtyczek lub blokowanego JavaScriptu.
3. Pozycjonowanie (nakładanie) – header zachodzi na treść strony, zasłania pierwszy nagłówek H1 albo nakłada się na pasek administratora WordPress. Tu winę ponosi brak kompensacji wysokości (`padding-top`) lub konflikt `z-index`.
dlatego ten przewodnik traktujemy jako pełną mapę diagnostyczną. Header wpływa też bezpośrednio na konwersję: lepki nagłówek utrzymuje przycisk CTA i numer telefonu w zasięgu wzroku przez cały czas przewijania. Jeśli zależy Ci na bezbłędnym, szybkim motywie, sprawdź jak budujemy strony internetowe dopięte technicznie.
Potrzebujesz pomocy z tym problemem?
Naprawimy to za Ciebie. Zostaw kontakt – odezwiemy się w 24h, zdiagnozujemy problem i przygotujemy wycenę naprawy.
- Bezpłatna diagnoza problemu w 24h
- Konkretna wycena naprawy + estymowany czas
- Doświadczenie w 200+ podobnych przypadkach
Pierwszy krok diagnozy: block theme (FSE) czy klasyczny motyw
Zanim dotkniesz CSS, ustal typ motywu. To determinuje całą resztę diagnozy, a większość poradników ten krok pomija.
Drzewo decyzyjne:
- Wejdź w panel WordPress i sprawdź menu Wygląd.
- Widzisz pozycję Edytor (zamiast Konfigurator/Dostosuj)? To motyw blokowy (Full Site Editing, FSE) – typowy dla WordPress 6.x i motywów Twenty Twenty-Four, Twenty Twenty-Five.
- Widzisz Konfigurator i klasyczne Menu? To motyw klasyczny – Astra, GeneratePress, OceanWP, większość komercyjnych motywów.
- Korzystasz z buildera (Elementor, Divi)? Header buduje wtedy wtyczka, nie sam motyw – diagnoza idzie przez ustawienia buildera.
Dlaczego to ważne? W motywie klasycznym header edytujesz w plikach lub Konfiguratorze, a sticky włączasz prostym CSS. W motywie blokowym header to wzorzec (template part) edytowany w Edytorze witryny, a lepkość ustawiasz w opcjach bloku Grupa lub przez selektor `:has()`. Pomylenie tych dwóch ścieżek to najczęstsza przyczyna godzin zmarnowanych na rozwiązaniach, które nie mogą zadziałać.
Sticky header nie działa – przyczyny i rozwiązania
Sticky header opiera się na właściwości CSS `position`, a większość problemów sprowadza się do trzech przyczyn.
Różnica position: sticky vs fixed
- `position: sticky` – element zachowuje się normalnie, dopóki nie dojdzie do zadanego progu (`top: 0`), wtedy przykleja się do krawędzi. Nie wypada z układu, treść pod nim nie skacze.
- `position: fixed` – element jest na stałe wyrwany z układu i przyklejony do okna. Wymaga ręcznej kompensacji wysokości, inaczej zasłoni pierwszą sekcję treści.
Trzy najczęstsze przyczyny braku lepkości:
1. Kontener nadrzędny ma `overflow: hidden` – `position: sticky` przestaje działać, jeśli którykolwiek rodzic ma ustawione `overflow: hidden`, `auto` lub `scroll`. To przyczyna numer jeden.
2. Brak `top: 0` – `position: sticky` bez zdefiniowanego progu (np. `top`) nie ma punktu zaczepienia i zachowuje się jak statyczny element.
3. Za niski `z-index` – header przykleja się, ale chowa się pod treścią. Dodaj `z-index: 100` lub wyższy.
W DevTools (F12) zaznacz nagłówek i w zakładce Computed sprawdź realną wartość `position` oraz `overflow` rodziców.
Sticky header w block themes WordPress 6.x – selektor :has()
Motywy blokowe owijają header w dodatkowe kontenery, przez co klasyczny CSS często nie trafia w odpowiedni element. WordPress 6.x renderuje nagłówek zwykle jako `
Najskuteczniejsze nowoczesne rozwiązanie wykorzystuje selektor `:has()`, który pozwala docelować rodzica zawierającego header:
.wp-site-blocks > header {
position: sticky;
top: 0;
z-index: 100;
}Gdy header jest głębiej zagnieżdżony, użyj `:has()` do precyzyjnego trafienia kontenera:
body:has(header.wp-block-template-part) header.wp-block-template-part {
position: sticky;
top: 0;
z-index: 100;
}CSS dodaj w Wygląd > Edytor > Style > kod CSS albo w Konfiguratorze (jeśli dostępny) w polu Dodatkowy CSS.
Fallback dla starszych przeglądarek: selektor `:has()` nie jest wspierany w starszych wersjach Firefoksa (sprzed wersji 121). Dla pewności zostaw też prostszy wariant bez `:has()` lub dodaj minimalny skrypt JavaScript przełączający klasę `.is-sticky` na podstawie zdarzenia scroll. W praktyce dziś `:has()` działa w ponad 90% przeglądarek, więc fallback to ostrożność, a nie konieczność.
Sticky header w motywach i builderach: Astra, GeneratePress, Elementor, Divi
Popularne motywy i buildery mają własne, wbudowane przełączniki sticky – warto je znać, zanim sięgniesz po CSS.
- Astra – sticky header dostępny w dodatku Astra Pro (moduł Sticky Header) lub przez wtyczkę Sticky Header. Włączasz w Konfigurator > Header Builder > Sticky Header.
- GeneratePress – moduł Sticky w GP Premium. Aktywuj w Wygląd > GeneratePress > Modules, potem ustawienia w sekcji Layout > Header.
- Elementor – w wersji Pro zbuduj header w Theme Builder, a następnie w ustawieniach sekcji nagłówka przejdź do Advanced > Motion Effects > Sticky: Top. Bez Elementor Pro tej opcji nie ma.
- Divi – w Divi Theme Builder edytuj globalny header, zaznacz wiersz (Row), wejdź w Advanced > Position > Sticky Position: Stick to Top.
Jeśli motyw lub builder ma natywny przełącznik, używaj go zamiast ręcznego CSS – aktualizacje go nie nadpiszą, a opcja uwzględnia kompensację wysokości. Konfiguracja zaawansowanych motywów to częsty element naszych wdrożeń WordPress.
Uniwersalne rozwiązanie CSS dla sticky header (3 linie)
Gdy żaden wbudowany przełącznik nie pomaga, zadziała uniwersalny CSS. Cała sztuka to trafienie we właściwy selektor.
Trzy linie, które rozwiązują większość przypadków:
.site-header {
position: sticky;
top: 0;
z-index: 999;
}Jak znaleźć selektor swojego headera w DevTools:
1. Naciśnij F12, by otworzyć narzędzia deweloperskie.
2. Kliknij ikonę strzałki (Inspect / Wybierz element) i najedź na nagłówek strony.
3. W panelu Elements zobaczysz podświetlony tag, np. `
4. Skopiuj klasę (`.site-header`) lub id (`#masthead`) i użyj jej w CSS zamiast przykładowej.
Jeśli reguła nie działa, w zakładce Styles sprawdź, czy nie jest przekreślona (nadpisana przez inną regułę). Wtedy dodaj `!important` albo podnieś specyficzność selektora. Pamiętaj o sprawdzeniu `overflow` rodziców – to najczęstszy cichy sabotażysta. CSS wstaw w Konfigurator > Dodatkowy CSS (motyw klasyczny) lub w stylach Edytora (motyw blokowy).
Konflikt wtyczek i motywu – jak diagnozować
Gdy nie wiesz, co psuje header lub menu, metoda eliminacji da odpowiedź w kilka minut. Zawsze testuj na kopii roboczej (staging), nie na produkcji.
Procedura diagnozy konfliktu:
1. Dezaktywuj wszystkie wtyczki naraz. Wejdź w Wtyczki, zaznacz wszystkie, akcja zbiorcza Wyłącz. Problem zniknął? Winna jest wtyczka.
2. Włączaj wtyczki pojedynczo, po każdej sprawdzając header/menu. Element, który ponownie psuje stronę, to sprawca.
3. Jeśli wtyczki nie winne – przełącz na motyw domyślny (Twenty Twenty-Four lub Twenty Twenty-Five). Problem zniknął? Wina leży w Twoim motywie.
4. Sprawdź konflikt JS w Console (F12) – czerwone błędy często wprost wskazują plik i wtyczkę, z której pochodzą.
Najczęstsze konflikty dotyczą wtyczek cache, builderów stron oraz wtyczek mega menu, które nadpisują standardową nawigację. Po znalezieniu winowajcy szukaj alternatywy lub zgłoś problem autorowi. Jeśli diagnoza przerasta Twój czas, skontaktuj się z nami – rozplątujemy takie konflikty regularnie.
Header nakłada się na treść – kompensacja wysokości
Header z `position: fixed` jest wyrwany z układu strony, więc treść chowa się pod nim, a pierwszy nagłówek H1 znika za paskiem. Rozwiązaniem jest kompensacja wysokości.
Mechanizm: skoro fixed header zajmuje, powiedzmy, 80 px na górze, dodaj taki sam odstęp na początku treści.
body {
padding-top: 80px;
}lub na głównym kontenerze treści:
.site-content {
margin-top: 80px;
}Jak zmierzyć dokładną wysokość headera (zamiast zgadywać): w DevTools (F12) zaznacz nagłówek i w zakładce Computed odczytaj wartość `height`. To Twoja dokładna liczba do `padding-top`.
Uwaga na mobile: header bywa niższy na telefonie niż na desktopie. Użyj media queries, by ustawić różne wartości:
@media (max-width: 768px) {
body { padding-top: 60px; }
}Gdy używasz `position: sticky` zamiast `fixed`, problem znika sam – element nie wypada z układu i kompensacja nie jest potrzebna. To kolejny argument za sticky.
Header zachodzi na pasek administratora (admin bar)
Zalogowani użytkownicy widzą u góry pasek administratora WordPress (admin bar). Fixed lub sticky header z `top: 0` wjeżdża pod ten pasek albo go zasłania.
WordPress sam dodaje do `
` klasę `.logged-in` oraz `.admin-bar`, gdy pasek jest widoczny, a sam pasek ma stałą wysokość: 32 px na desktopie i 46 px na mobile (poniżej 783 px szerokości).Rozwiązanie – przesuń header o wysokość paska tylko dla zalogowanych:
.admin-bar .site-header {
top: 32px;
}
@media (max-width: 782px) {
.admin-bar .site-header {
top: 46px;
}
}Dzięki klasie `.admin-bar` reguła działa wyłącznie wtedy, gdy pasek jest faktycznie wyświetlany – goście strony nie zobaczą zbędnego odstępu.
Skąd wartości 32 i 46 px? To stałe wymiary paska WordPress. Możesz je samodzielnie zweryfikować: zaloguj się, otwórz F12, zaznacz `#wpadminbar` i w zakładce Computed odczytaj `height`. Zawsze warto zmierzyć, zamiast ślepo ufać liczbom z poradników.
Diagnoza w DevTools przeglądarki (F12) – checklista
Narzędzia deweloperskie przeglądarki (F12 lub prawy przycisk > Zbadaj) to najszybsza droga do źródła problemu. Oto gotowa checklista diagnostyczna w jednym flow.
Krok 1 – Console. Szukaj czerwonych błędów JavaScript. `Uncaught TypeError` lub `ReferenceError` wskazują na zepsuty lub niezaładowany skrypt (typowe przy martwym hamburgerze). Zapisz nazwę pliku z błędu.
Krok 2 – Network. Ustaw filtr na JS, odśwież stronę. Sprawdź, czy skrypty menu i headera ładują się ze statusem 200 (nie 404). Status 404 = brakujący plik, częsty po nieudanej aktualizacji.
Krok 3 – Elements + Computed. Zaznacz header i odczytaj realne wartości: `position`, `top`, `z-index`, `height`, `overflow`. To weryfikuje, czy Twój CSS faktycznie dochodzi do elementu, czy jest nadpisany (przekreślony w zakładce Styles).
Krok 4 – tryb responsywny. Włącz widok mobilny (ikona urządzenia) i powtórz testy – wiele problemów z headerem ujawnia się tylko na mobile.
Ten flow Console > Network > Computed rozwiązuje większość przypadków bez zgadywania. Problemy z headerem nie są kosmetyką: psują UX, mobilność i pośrednio SEO oraz konwersję, bo utrudniają dostęp do menu i CTA. Jeśli wolisz oddać to specjalistom, zobacz nasze usługi WordPress lub napisz przez formularz kontaktowy.
Nie chcesz grzebać w tym sam i ryzykować pogłębienia awarii? Naprawimy Twój WordPress – diagnoza w 30 minut, pełna naprawa od 299 zł, z miesięczną opieką w pakiecie.
Wspomniane narzędzia
Potrzebujesz pomocy z WordPress?
Tworzymy i naprawiamy strony na WordPress. Optymalizacja prędkości, bezpieczeństwo, aktualizacje. 18+ lat doświadczenia.
Najczęściej zadawane pytania
Dlaczego sticky header nie przykleja się przy scrollowaniu w WordPress?
Jak naprawić menu, które nie wyświetla się w WordPress?
Dlaczego menu mobilne hamburger nie reaguje na kliknięcia?
Jak naprawić header, który nakłada się na treść strony?
Gdzie jest sekcja Menu w WordPress 6.x z motywem blokowym?
Czym różni się position: sticky od position: fixed w CSS?
Jak sprawdzić, która wtyczka psuje menu lub header?
Potrzebujesz pomocy?
Potrzebujesz pomocy z tym problemem?
Naprawimy to za Ciebie. Zostaw kontakt – odezwiemy się w 24h, zdiagnozujemy problem i przygotujemy wycenę naprawy.
- Bezpłatna diagnoza problemu w 24h
- Konkretna wycena naprawy + estymowany czas
- Doświadczenie w 200+ podobnych przypadkach