{"id":162,"date":"2026-05-18T20:31:35","date_gmt":"2026-05-18T18:31:35","guid":{"rendered":"https:\/\/projektwordpress.pl\/index.php\/2026\/05\/18\/renderowanie-javascript-w-wordpress-co-blokuje-indeksacje-i-jak-to-naprawic\/"},"modified":"2026-05-18T20:31:35","modified_gmt":"2026-05-18T18:31:35","slug":"renderowanie-javascript-w-wordpress-co-blokuje-indeksacje-i-jak-to-naprawic","status":"publish","type":"post","link":"https:\/\/projektwordpress.pl\/index.php\/2026\/05\/18\/renderowanie-javascript-w-wordpress-co-blokuje-indeksacje-i-jak-to-naprawic\/","title":{"rendered":"Renderowanie JavaScript w WordPress co blokuje indeksacj\u0119 i jak to naprawi\u0107"},"content":{"rendered":"<p>Masz tre\u015bci, masz ruch z reklam, a w Google kicha. Kategorie pokazuj\u0105 si\u0119 bez fragment\u00f3w, produkty nie \u0142api\u0105 si\u0119 na frazy d\u0142ugiego ogona, a Search Console podpowiada Rzadko indeksowane lub Odkryte nie zindeksowane. Cz\u0119sto winny nie le\u017cy w s\u0142owach kluczowych, tylko w tym jak witryna renderuje tre\u015bci przez JavaScript.<\/p>\n<p>Gdy kluczowa zawarto\u015b\u0107 pojawia si\u0119 dopiero po zadzia\u0142aniu skrypt\u00f3w, robot mo\u017ce nie doczeka\u0107 ko\u0144ca albo w og\u00f3le nie wywo\u0142a\u0107 zdarze\u0144 potrzebnych do z\u0142o\u017cenia strony. Dotyczy to nie tylko opis\u00f3w i list produkt\u00f3w, ale te\u017c nawigacji, paginacji, filtr\u00f3w, link\u00f3w do kolejnych podstron, a nawet danych strukturalnych. Efekt to s\u0142aba indeksacja mimo porz\u0105dnej merytoryki.<\/p>\n<h2>Kiedy JavaScript staje si\u0119 problemem dla indeksacji<\/h2>\n<p>Je\u015bli g\u0142\u00f3wna tre\u015b\u0107 pojawia si\u0119 na stronie dopiero po pobraniu danych przez skrypt, wyszukiwarka musi po\u015bwi\u0119ci\u0107 dodatkowe zasoby na uruchomienie kodu. Ma na to ograniczony bud\u017cet. Gdy skrypty s\u0105 ci\u0119\u017ckie, \u0142a\u0144cuchy zale\u017cno\u015bci d\u0142ugie albo pojawiaj\u0105 si\u0119 b\u0142\u0119dy, cz\u0119\u015b\u0107 zawarto\u015bci nie trafia do indeksu lub trafia z op\u00f3\u017anieniem.<\/p>\n<p>W WordPressie najcz\u0119\u015bciej dzieje si\u0119 tak, gdy builder lub wtyczka sklepu montuje listy produkt\u00f3w, recenzje czy sekcje bloga dopiero po stronie przegl\u0105darki. Podobnie gdy paginacja i filtry dzia\u0142aj\u0105 wy\u0142\u0105cznie w trybie AJAX i nie tworz\u0105 osobnych adres\u00f3w z tre\u015bci\u0105 gotow\u0105 do pobrania przez robota.<\/p>\n<p>Problem pog\u0142\u0119biaj\u0105 wyskakuj\u0105ce okna ukrywaj\u0105ce stron\u0119, nawigacja zbudowana wy\u0142\u0105cznie z akcji klik bez prawdziwych adres\u00f3w w linkach oraz meta dane wstrzykiwane przez skrypt. Robot nie klika, nie zamyka pop up\u00f3w i nie zawsze czeka a\u017c wszystko si\u0119 dorysuje.<\/p>\n<h2>Jak rozpozna\u0107 \u017ce tre\u015b\u0107 nie trafia do indeksu<\/h2>\n<p>Najpro\u015bciej sprawdzi\u0107 \u017ar\u00f3d\u0142o strony i por\u00f3wna\u0107 je z widokiem po w\u0142\u0105czeniu narz\u0119dzi deweloperskich. Je\u015bli w \u017ar\u00f3dle nie ma listy produkt\u00f3w, menu lub tekstu, a pojawiaj\u0105 si\u0119 dopiero po dzia\u0142aniu skrypt\u00f3w, masz wskaz\u00f3wk\u0119. W Search Console warto u\u017cy\u0107 sprawdzania adresu oraz testu na \u017cywo i por\u00f3wna\u0107 wyrenderowany zrzut z tym co widzisz w przegl\u0105darce.<\/p>\n<p>Drugi sygna\u0142 to kategorie i tagi, kt\u00f3re maj\u0105 ma\u0142o zaindeksowanych podstron mimo wielu produkt\u00f3w i wpis\u00f3w. Je\u015bli filtry lub paginacja nie zmieniaj\u0105 adresu strony i nie tworz\u0105 osobnych wersji, robot nie ma czego doda\u0107 do indeksu.<\/p>\n<h2>Co w WordPressie najcz\u0119\u015bciej znika przez JS<\/h2>\n<p>Listy produkt\u00f3w w WooCommerce \u0142adowane po stronie przegl\u0105darki, nieserverowa paginacja oraz filtrowanie bez realnych adres\u00f3w. Dla robota to jedna strona z ograniczon\u0105 tre\u015bci\u0105. Gdy nie ma odno\u015bnik\u00f3w do kolejnych stron, nie odkryje g\u0142\u0119bszych pozycji.<\/p>\n<p>Nawigacja ukryta w przycisku, kt\u00f3ry dzia\u0142a wy\u0142\u0105cznie na skrypcie. Link musi mie\u0107 atrybut href prowadz\u0105cy do adresu. Je\u015bli wszystko opiera si\u0119 na zdarzeniach klik, crawler nie przejdzie dalej. Dotyczy to te\u017c element\u00f3w jak karuzele, gdzie kolejne slajdy nie s\u0105 linkami.<\/p>\n<p>Meta robots, canonical i dane strukturalne generowane wy\u0142\u0105cznie przez JavaScript. Wyszukiwarka potrafi przetwarza\u0107 skrypty, lecz nie zawsze i nie od razu. Bezpieczniej poda\u0107 te informacje w HTML ju\u017c na etapie serwera.<\/p>\n<p><a href=\"https:\/\/projektwordpress.pl\/\">Zobacz wi\u0119cej darmowej wiedzy na ProjektWordPress.pl<\/a><\/p>\n<h2>Szybkie testy kt\u00f3re nie wymagaj\u0105 programisty<\/h2>\n<p>Wy\u0142\u0105cz JavaScript w przegl\u0105darce i zobacz czy na stronie wci\u0105\u017c wida\u0107 menu, tre\u015b\u0107 kategorii, paginacj\u0119 i linki do produkt\u00f3w. Sprawd\u017a czy filtr po wyborze warto\u015bci tworzy nowy adres i czy da si\u0119 go otworzy\u0107 w nowej karcie. Je\u015bli po wy\u0142\u0105czeniu skrypt\u00f3w strona staje si\u0119 pusta albo nie da si\u0119 przej\u015b\u0107 dalej, indeksacja jest zagro\u017cona.<\/p>\n<h2>Sprawdzone sposoby naprawy w praktyce<\/h2>\n<p>Najpierw zapewnij \u017ce kluczowa tre\u015b\u0107 powstaje na serwerze. W praktyce oznacza to u\u017cycie p\u0119tli WordPress do list wpis\u00f3w i produkt\u00f3w, a nie do\u0142adowywanie ich po stronie przegl\u0105darki. Paginacja powinna mie\u0107 klasyczne linki z numerami stron. Filtry powinny generowa\u0107 adresy z parametrami, kt\u00f3re serwer rozumie i zwraca gotowy HTML.<\/p>\n<p>AJAX mo\u017ce zosta\u0107 jako poprawa u\u017cyteczno\u015bci, ale z podej\u015bciem progressive enhancement. Najpierw dzia\u0142aj\u0105ce linki i adresy, dopiero potem wyg\u0142adzenie ich przez skrypty. Dzi\u0119ki temu robot zobaczy struktur\u0119, a u\u017cytkownik szybkie prze\u0142\u0105czanie bez prze\u0142adowa\u0144.<\/p>\n<p>Ogranicz i porz\u0105dkuj skrypty. Usu\u0144 te kt\u00f3re tylko upi\u0119kszaj\u0105, a blokuj\u0105 \u0142adowanie. Atrybuty defer i async pomagaj\u0105 nie wstrzymywa\u0107 renderowania, ale nie mog\u0105 dotyczy\u0107 kodu, kt\u00f3ry buduje g\u0142\u00f3wn\u0105 tre\u015b\u0107. W\u0142\u0105cz cache po stronie serwera aby podawa\u0107 gotowy HTML i skr\u00f3ci\u0107 czas do pierwszego renderu.<\/p>\n<h2>Kiedy warto zmieni\u0107 podej\u015bcie do architektury<\/h2>\n<p>Gdy strona przypomina aplikacj\u0119 jednego widoku i wszystko \u017cyje w skryptach, rozwa\u017c przeniesienie kluczowych szablon\u00f3w na natywne mechanizmy WordPress. Alternatyw\u0105 bywa pre rendering czyli generowanie statycznego HTML dla stron kt\u00f3re nie musz\u0105 by\u0107 budowane na \u017cywo. Dla kategorii i stron informacyjnych to cz\u0119sto wystarczaj\u0105ce i stabilne rozwi\u0105zanie.<\/p>\n<p>Zmiany wprowadzaj etapami zaczynaj\u0105c od kategorii i stron o najwi\u0119kszym potencjale. Po wdro\u017ceniu obserwuj w Search Console wydajno\u015b\u0107 indeksowania oraz liczb\u0119 zaindeksowanych adres\u00f3w. Je\u015bli ro\u015bnie widoczno\u015b\u0107 kategorii i przybywa zaindeksowanych paginacji, znaczy \u017ce struktura zacz\u0119\u0142a pracowa\u0107 na Twoj\u0105 korzy\u015b\u0107.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Masz tre\u015bci, masz ruch z reklam, a w Google kicha. Kategorie pokazuj\u0105 si\u0119 bez fragment\u00f3w, produkty nie \u0142api\u0105 si\u0119 na frazy d\u0142ugiego ogona, a&hellip;<\/p>\n","protected":false},"author":1,"featured_media":163,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-162","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-optymalizacja-seo"],"_links":{"self":[{"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/posts\/162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/comments?post=162"}],"version-history":[{"count":0,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/posts\/162\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/media\/163"}],"wp:attachment":[{"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/media?parent=162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/categories?post=162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/projektwordpress.pl\/index.php\/wp-json\/wp\/v2\/tags?post=162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}