
🚫 Jak zamknąć strony paginacji przed indeksowaniem w Yoast SEO
Kiedy mają Państwo setki postów, dziesiątki kategorii i chmurę tagów, strony paginacji mnożą się niepostrzeżenie. /page/2/, potem /page/3/, potem /page/15/ i oto Google indeksuje tysiąc śmieciowych URL-i, które nie niosą unikalnej treści, ale zjadają budżet crawlowania.
W starszych wersjach Yoast SEO był wbudowany przełącznik „Noindex subpages of archives". Jedno zaznaczenie i problem rozwiązany. Jednak w 2020 roku zespół Yoast usunął to ustawienie z interfejsu. Oficjalne stanowisko: Google zaczął inteligentniej pracować z seriami paginowanymi i ustawienie nie jest już potrzebne.
W praktyce jest potrzebne. Szczególnie dużym serwisom, gdzie każda zbędna strona w indeksie odjada limit obchodów tym URL-om, które naprawdę mają się rankingować.
Deweloperzy Yoast zostawili furtkę: filtr wpseo_robots. Za jego pomocą można programowo ustawić noindex, follow dla dowolnych stron paginacji. Poniżej dwa warianty kodu: twardy (wszystkie URL-e /page/) i selektywny (tylko archiwa kategorii i tagów).
💡 Szybki przegląd:
- Dowiedzą się Państwo, dlaczego Yoast usunął wbudowaną opcję i w jakich przypadkach jest ona wciąż potrzebna
- Otrzymają Państwo gotowy kod do
functions.php: dwa warianty filtrawpseo_robots - Nauczą się Państwo sprawdzać wynik przez kod źródłowy strony i Google Search Console
Dlaczego strony paginacji warto zamknąć przed indeksowaniem
Każda strona paginacji ma trzy problemy. Pierwszy, duplikacja treści: /category/seo/, /category/seo/page/2/ i /category/seo/page/3/ pokazują te same zapowiedzi, tylko podzielone na strony. Drugi, cienka treść (thin content): na stronie paginacji nie ma pełnowartościowego artykułu, tylko lista tytułów z excerpt-ami. Trzeci, budżet crawlowania: Googlebot wydaje limit obchodów na URL-e, które nie mają wartości wyszukiwawczej, zamiast ponownie obchodzić świeże posty.
Yoast SEO historycznie potrafił rozwiązać to zadanie jednym zaznaczeniem w ustawieniach. Ale od wersji 14.0 firma zrewidowała podejście. Logika była taka: Google nauczył się rozpoznawać rel="prev" i rel="next", rozumie strukturę paginacji i sam kieruje użytkowników na pierwszą stronę. A noindex na podstronach, zdaniem Yoast, zmniejsza liczbę obchodów i przeszkadza wyszukiwarce w ponownym odkrywaniu starych artykułów przez linki z tych stron.
Argument jest sporny. Jeśli mają Państwo niewielki blog na 30 postów, OK, Google sobie poradzi. Ale jeśli serwis rozrósł się do kilku tysięcy URL-i z paginacją kategorii, tagów i archiwów dat, wyszukiwarka traci czas nie na to. Zamknięcie podstron przed indeksowaniem przez kod to kontrolowane i odwracalne rozwiązanie.
Wariant 1: noindex dla wszystkich stron paginacji
Najprostsze i radykalne podejście. Filtr sprawdza warunek is_paged(), standardową funkcję WordPress, która zwraca true na dowolnej stronie paginacji (archiwa, kategorie, tagi, strona główna). Jeśli warunek jest prawdziwy, podstawiamy noindex, follow.
Proszę dodać ten kod do functions.php aktywnego motywu lub przez wtyczkę Code Snippets:
1 add_filter('wpseo_robots', function($robots) { 2 if (is_paged()) { 3 return 'noindex,follow'; 4 } 5 return $robots; 6 });
Co dzieje się linijka po linijce:
add_filter('wpseo_robots', ...), zaczepiamy się do filtra Yoast SEO, który odpowiada za zawartość meta-tagurobots. Filtr przyjmuje bieżącą wartość$robotsi oczekuje z powrotem ciągu znaków.is_paged(), wbudowana funkcja WordPress z jądra. Działa na każdym URL-u, gdzie występuje zmiennapaged(czyli/page/N/).return 'noindex,follow', mówimy wyszukiwarce: „nie indeksuj tej strony, ale przechodź przez linki z niej". Linki wewnątrz paginacji nadal przekazują moc.return $robots, dla wszystkich pozostałych stron zwracamy standardową wartość Yoast bez zmian.
Po dodaniu kodu proszę wejść na dowolną stronę typu /category/seo/page/2/ i otworzyć źródło HTML (Ctrl+U). Proszę znaleźć wiersz <meta name="robots". Jeśli widzą Państwo content="noindex, follow", filtr zadziałał.
Wariant 2: noindex tylko dla archiwów kategorii i tagów
Pierwszy wariant uderza we wszystkie paginowane strony bez rozróżnienia, włącznie ze stroną główną (/page/2/). Jeśli strona główna serwisu wyświetla zapowiedzi postów i chcą Państwo zachować jej podstrony w indeksie, potrzebna jest bardziej precyzyjna logika.
Dodajemy drugi warunek, is_archive(). Ta funkcja WordPress zwraca true tylko na stronach archiwów: kategorii, tagów, archiwów dat, archiwów autorów i niestandardowych taksonomii.
1 add_filter('wpseo_robots', function($robots) { 2 if (is_paged() && is_archive()) { 3 return 'noindex,follow'; 4 } 5 return $robots; 6 });
Różnica w stosunku do pierwszego wariantu polega na połączeniu warunków. is_paged() && is_archive() oznacza: „strona paginacji ORAZ strona archiwum jednocześnie". Paginacja strony głównej (/page/2/) nie spełnia warunku is_archive(), dlatego jej indeksowanie zostaje zachowane.
Który wariant wybrać:
Sytuacja | Wariant |
|---|---|
Duży serwis, tysiące URL-i paginacji, potrzebna maksymalna kontrola | Wariant 1 |
Strona główna wyświetla strumień postów, podstrony głównej są ważne dla indeksu | Wariant 2 |
Sklep internetowy na WooCommerce z kategoriami produktów | Wariant 2 |
Potrzebna przewidywalność i minimum wyjątków | Wariant 1 |
Jak sprawdzić wynik
Po wstawieniu kodu proszę sprawdzić trzy rzeczy.
Pierwsze, kod źródłowy. Proszę otworzyć dowolną stronę paginacji, Ctrl+U, wyszukać <meta name="robots". Proszę upewnić się, że widzą Państwo content="noindex, follow", a nie content="index, follow".
Drugie, Google Search Console. Proszę wejść w narzędzie do sprawdzania URL-a, wkleić adres paginowanej strony i kliknąć „Sprawdź". W bloku „Indeksowanie" zobaczą Państwo status: „Strona nie została zindeksowana" z powodem „Wykluczona przez tag noindex". To potwierdza, że Googlebot otrzymał i przetworzył dyrektywę.
Trzecie, dynamika indeksu. W Search Console proszę otworzyć „Indeks" → „Strony". Po 2-4 tygodniach od wdrożenia kodu zobaczą Państwo wzrost liczby stron w statusie „Wykluczona przez tag noindex" i spadek liczby zindeksowanych paginowanych URL-i. Proces nie jest natychmiastowy: Googlebot musi ponownie obejść każdy URL, aby odczytać nowy tag.
Ważne ograniczenia i zastrzeżenia
Kod zmienia zachowanie całego serwisu. Przed wdrożeniem proszę upewnić się, że rozumieją Państwo konsekwencje.
Gwałtowne wypadnięcie tysięcy stron z indeksu może spowodować tymczasowy spadek ruchu. Jeśli serwis żył z indeksowaniem paginacji kilka lat i część podstron otrzymywała wejścia z wyszukiwarki, stracą Państwo te wejścia. W zamian zwolni się budżet crawlowania dla stron, które naprawdę mają się rankingować. Ale okres adaptacji trwający 3-6 tygodni jest nieunikniony.
Proszę zrobić backup functions.php przed edycją. Błąd składni w kodzie PHP położy cały serwis (white screen of death). Jeśli używają Państwo Code Snippets, wtyczka sama wyłapie błąd krytyczny i dezaktywuje snippet. Jeśli edytują Państwo functions.php bezpośrednio, proszę mieć pod ręką dostęp FTP, aby przywrócić plik.
Jeśli na serwisie zainstalowana jest wtyczka cache'ująca (WP Rocket, W3 Total Cache), proszę wyczyścić cache po dodaniu kodu. W przeciwnym razie stare kopie HTML stron bez nowego meta-tagu robots będą serwowane odwiedzającym i wyszukiwarkom przez kilka godzin lub dni.
Bardziej szczegółowe omówienie wszystkich możliwości Yoast SEO, od instalacji po dokładne ustawienia meta-tagów, znajdą Państwo w naszym poradniku konfiguracji Yoast SEO dla WordPress.
⁉️🤔 Często zadawane pytania
Dlaczego Yoast SEO usunął wbudowaną opcję noindex dla podstron?
Google nauczył się rozpoznawać serie paginowane przez tagi
rel="prev"irel="next"i kierować użytkowników na pierwszą stronę. Yoast uznał, że wymuszony noindex na podstronach zmniejsza liczbę obchodów i przeszkadza w ponownym indeksowaniu starych artykułów przez linki ze stron paginowanych. Oficjalna pomoc Yoast potwierdza: ustawienie usunięto z interfejsu, ale filtrwpseo_robotspozostał do programowego sterowania.
Czy filtr wpseo_robots jest wciąż obsługiwany w 2026 roku?
Tak. Filtr
wpseo_robotsdziała w aktualnych wersjach Yoast SEO (24.x, rok 2026) i jest udokumentowany w Metadata API na developer.yoast.com. Ważna zmiana: do wersji 19.8 filtr pozwalał zwrócićfalse, aby usunąć meta-tag robots. Począwszy od 19.8, zwróceniefalsejest ignorowane, filtr oczekuje tylko ciągu znaków ('noindex,follow'lub$robots). Oba warianty kodu z artykułu zwracają ciąg znaków i są w pełni kompatybilne.
Czy kod zadziała, jeśli serwis ma niestandardową strukturę paginacji?
Funkcja
is_paged()opiera się na standardowym parametrze zapytania WordPresspaged. Jeśli paginacja jest zaimplementowana przez niestandardowy parametr (na przykład?pg=2lub wirtualny scrolling), warunek nie zadziała. Dla niestandardowej paginacji proszę zastąpićis_paged()sprawdzeniem konkretnego query_var:get_query_var('custom_page_var'). Wtyczki typu WP-PageNavi działają przez standardowypaged, nie ma konfliktu.
Po jakim czasie Google usunie paginowane strony z indeksu?
Średnio od 2 do 6 tygodni. Szybkość zależy od rozmiaru serwisu i częstotliwości obchodów: w serwisie z codziennymi obchodami Googlebot ponownie obejdzie główne sekcje w 7-10 dni, na niewielkim blogu z cotygodniowymi obchodami, w miesiąc. Można przyspieszyć przez ręczne żądanie ponownego obchodu w Search Console (sekcja „Indeks" → „Strony" → wybór URL-a → „Poproś o zindeksowanie"), ale Google przetwarza takie żądania w kolejności zgłoszeń.
Czy można zamknąć paginację przez robots.txt zamiast noindex?
Technicznie tak:
Disallow: */page/*w robots.txt zablokuje obchód paginowanych URL-i. Ale to gorsze rozwiązanie niż noindex. Powód: robots.txt blokuje obchód strony, a nie jej indeksowanie. Jeśli do paginowanej strony prowadzą linki zewnętrzne, Google może ją zindeksować jako „stronę bez opisu". Przy tym linki z samej strony również nie zostaną obejrzane, stracą Państwo przekazywanie mocy do postów.noindex, followrozwiązuje oba zadania: strona nie jest indeksowana, ale linki z niej są obchodzone.
Czy warto zamykać paginację przed indeksowaniem w Państwa przypadku
Odpowiedź sprowadza się do dwóch czynników: rozmiaru serwisu i występowania budżetu crawlowania jako zasobu deficytowego.
Jeśli mają Państwo 50 postów i trzy kategorie, proszę się nie przejmować. Google sam zdecyduje, które strony pokazywać w wynikach, a zbędne odsieje jako mało wartościowe. Filtr wpseo_robots w tym scenariuszu to nadmierne komplikowanie.
Jeśli mają Państwo 500+ postów, dziesiątki kategorii, aktywny blog z tagami i archiwum dat, paginacja tworzy setki i tysiące URL-i, które wyszukiwarka obchodzi zamiast świeżych artykułów. Proszę włączyć wariant 2 (archiwa) lub wariant 1 (wszystko), sprawdzić wynik przez kod źródłowy i Search Console i dać Google 3-4 tygodnie na ponowny obchód.
Kod jest odwracalny: zakomentują Państwo filtr, po miesiącu wszystkie paginowane strony wrócą do indeksu. Żadnych nieodwracalnych konsekwencji.



