Mapa strony teraz w każdym WordPressie. Co musisz wiedzieć

Mapa XML w WordPressie

WordPress 5.5 wprowadza istotną zmianę: mapa strony (ang. XML sitemap) zostanie automatycznie wygenerowana dla każdej witryny posadzonej na WordPressie.

Choć intencje autorów pomysłu były dobre, okazuje się, że temat ten budzi sporo kontrowersji.

Rodzą się pytania:

  • Czy to dobrze czy źle?
  • Po co mi w ogóle mapa strony?
  • Jak wygląda przykładowa mapa generowana przez WordPressa?
  • Jaką ma nazwę i gdzie jej szukać?
  • Czy można ją modyfikować?
  • Czy Google automatycznie wykryje tę mapę?
  • A co, jeśli ja już używam mapy, którą generuję wtyczką? Będzie konflikt?
  • Można całkowicie wyłączyć generowanie tej mapy?

Odpowiedzi na te i wiele innych pytań dotyczących XML-owej mapy strony w WordPressie znajdziesz w tym wpisie.

Co to jest XML sitemap?

Wyobraź sobie, że stworzyłeś stronę na WordPressie. Ma ona mnóstwo stron i podstron, wpisów, może nawet jakiś wpisów opartych o custom post types.

Zależy ci, żeby Google czy inne wyszukiwarki poznały całą twoją witrynę i zindeksowały wszystkie twoje treści. Żeby nie pominęły żadnej ważnej podstrony, a w przyszłości nowych, które będą pojawiać się później.

Potrzebujesz mapy witryny, czyli spisu wszystkich twoich stron i podstron WordPressa w formie odnośników do nich.

Dzięki takiej mapie boty indeksujące łatwiej znajdą każdy kawałek twojej witryny i zapoznają się z jej treścią. Ale żeby tak się stało, taka mapa nie może być zwykłym spisem linków w HTMLu. Musi mieć ustalony format.

Za chwilę dowiemy się, że będzie to format XML, ale póki odpowiedzmy na bardziej zasadne pytanie:

Po co mi w ogóle taka mapa?

Czy coś poważnego się stanie, jak moja witryna nie będzie mieć mapy strony?

Nie.

Boty wyszukiwarek zwykle odkrywają kolejne podstrony poprzez analizę istniejących odnośników w ramach twojej witryny.

Ale jeśli takiej mapy strony nie wygenerujesz, jest ryzyko, że niektóre z twoich podstron zostaną niezauważone, szczególnie takie, które nie pojawiają się w menu głównym i odnośniki do nich są gdzieś „zakopane” w zakamarkach innych treści, albo zapomnieliśmy te nowe podstrony gdziekolwiek podlinkować.

Mapa witryny szczególnie przydaje się w dużych, rozbudowanych witrynach, o złożonej strukturze stron i podstron.

Przykładowa mapa witryny w formacie XML

Mapa witryny stanowi zatem uporządkowany dodatek do informacji, którą boty indeksujące i tak jakoś, prędzej czy później by odnalazły. Podaje na tacy botom indeksującym wszystkie linki do stron w ramach twojej witryny.

Żeby informacje zapodać w sposób uporządkowany i ustandaryzowany, potrzeba przedstawić je w odpowiednim formacie. Dla mapy witryny obowiązującym standardem jest format XML.

Poniżej załączam przykład mapy witryny w formacie XML wygenerowany dla bloga, który właśnie czytasz. A właściwie jej niewielki fragment.

Fragment przykładowej mapy strony w formacie XML

Jeśli chcesz poczytać więcej na temat formatu XML dla sitemap, zajrzyj na stronę https://www.sitemaps.org/protocol.html.

Sitemap XML teraz w twoim WordPressie

Od WordPressa w wersji 5.5 (wdrożenie masowe planowane na sierpień 2020), każda witryna dostanie taką mapę automatycznie.

Dlatego wypadałoby wiedzieć coś więcej na ten temat…

Zacznijmy od najważniejszych rzeczy.

Jaką nazwę ma mapa witryny generowana przez WordPressa?

Mapa, którą wygeneruje ci WordPress będzie mieć nazwę:

wp-sitemap.xml

Czyli, zobaczy ją każdy, kto do adresu witryny siedzącej na WordPressie doda końcówkę /wp-sitemap.xml. Przykładowo, dla tego bloga będzie to:

https://webfaces.pl/blog/wp-sitemap.xml

… bo ten blog siedzi pod adresem webfaces.pl/blog.

Co znajdzie się na mapie witryny generowanej przez WordPressa?

Gdy odwiedzimy mapę wp-sitemap.xml wygenerowaną przez WordPressa, czeka nas mała niespodzianka.

Otóż najpierw zobaczymy jedynie króciutki zbiór linków (a nie jak można by się spodziewać całe stado odnośników).

Mapa wygenerowana przez WordPress może wyglądać tak:

Przykładowa mapa wygenerowana przez WordPressa
Przykładowa mapa wygenerowana przez WordPressa

A więc zobaczymy najpierw coś w rodzaju spisu treści kolejnych map, a niej znajdziemy:

  1. link do mapy wszystkich wpisów witryny
  2. link do mapy wszystkich stron witryny
  3. link do mapy wszystkich wpisów opartych o danych typ wpisu (CPT) – dla każdego typu wpisu będzie osobny link (osobna podmapa)
  4. link do mapy wszystkich kategorii
  5. link do mapy wszystkich tagów
  6. link do mapy wszystkich taksonomii (dla każdej taksonomii będzie osoby link)
  7. link do mapy wszystkich użytkowników

I dopiero każdy z tych linków zawiera konkretne już adresy stron. Dla przykładu, po kliknięciu w pierwszy z plików xml z obrazka wyżej zobaczymy:

Przykładowa "podmapa" wygenerowana przez WordPressa, dostępna po kliknięciu w jeden z linków mapy głównej.
Przykładowa „podmapa” wygenerowana przez WordPressa, dostępna po kliknięciu w jeden z linków mapy głównej.

A zatem mapa strony w formacie XML generowana przez WordPressa jest dwupoziomowa.

Ilustruje to poniższy schemat:

Struktura mapy strony generowanej przez WordPressa
Struktura mapy strony generowanej przez WordPressa

Na powyższym schemacie dla przykładu rozwinęłam tylko dwie z map: mapę wpisów i mapę termów taksonomi.

Czy można coś usunąć z tej mapy?

Tak, będzie można usuwać elementy z mapy, ale tylko programistycznie – poprzez wykorzystanie tzw. hooków: filtrów i akcji.

Co będzie można usunąć z mapy:

  • konkretny wpis/stronę
  • konkretny typ wpisu
  • konkretną taksonomię
  • konkretny term
  • konkretnego użytkownika
  • wszystkich użytkowników o wskazanej roli

Nazwy tych hooków znajdziemy w opisie wtyczki Core Sitemap, w ramach której była rozwijana koncepcja zanim weszła do silnika WordPressa.

Czy można wyłączyć generowanie mapy witryny?

Tak, można wyłączyć automatyczne generowanie mapy witryny przez WordPressa, ale tylko programistycznie.

  • przy pomocy filtra wp_sitemaps_enabled:
add_filter('wp_sitemaps_enabled', '__return_false');
  • albo wykorzystując funkcję:
remove_action( 'init', 'wp_sitemaps_get_server' );

Dlaczego ktoś miałby pozbywać się tej mapy? W końcu jej obecność ma pomóc w lepszej indeksacji naszej witryny…

Przyczyny mogą być różne. Oto najczęstsze:

  • twoja witryna już posiada mapę generowaną przez wtyczkę
  • twoja strona indeksuje się dobrze i bez mapy, a na mapie masz sporo stron, które chciałbyś ukryć i nie chce ci się bawić w wyłączanie poszczególnych z nich

Czy można sterować tą mapą z poziomu panelu WordPressa?

Nie.

Wszelkich manipulacji na tej mapie generowanej przez WP można dokonać tylko programistycznie, poprzez wykorzystanie hooków (filtrów i akcji, jak w przykładach wyżej).

Być może niebawem w ekosystemie WordPressa pojawią się wtyczki, które umożliwią lepszą kontrolę nad mapą poprzez wygodny interfejs użytkownika.

Autorzy WordPressa postawili na prostotę.

A co, jeśli ja używam już wtyczki do generowania mapy witryny?

Wiele stron na WordPress już dziś generuje mapę strony za pomocą wtyczek. Oto kilka popularnych:

Użycie wtyczki do wygenerowani mapy strony XML teraz nie będzie już potrzebne.

Jednak nic nie stoi na przeszkodzie, żeby zachować mapę generowaną przez wtyczkę.

Czy mapa wygenerowana automatycznie przez WP wejdzie w konflikt z mapą wygenerowaną przez wtyczkę?

Autorzy nowego rozwiązania zapewniają że nic takiego się nie stanie, nawet jeśli nasza witryna będzie mieć dwie mapy.

Ale lepiej trzymać się jednej, choćby ze względu na fakt, że pająki Google’a same mogą na naszą sitemapę się natknąć…

Czy Google automatycznie wykryje mapę witryny wygenerowaną przez WordPressa?

Mapę strony zwykle zgłasza się do Google „ręcznie”. Robi się to poprzez Google Search Console wprowadzając link to mapy strony. (Na blogu Yoast SEO we wpisie Submit Your Sitemap to Search Engines możesz przeczytać o zgłaszaniu mapy strony do Google i do innych wyszukiwarek).

Jednak, jeśli twoja witryna zawiera plik robots.txt z linkiem do mapy witryny, to boty Google’a (czy innej wyszukiwarki) automatycznie dowiedzą się o istnieniu mapy witryny.

W WordPressie 5.5 dodano funkcję (add_robots), która dodaje automatycznie mapę witryny do pliku robots.txt generowanego przez WordPressa.

robots

Nie stanie się tak jednak, gdy jawnie poprosiłeś w ustawieniach WordPressa (Ustawienia -> Czytanie), żeby twoja witryna nie była indeksowana. Wówczas link do mapy witryny nie trafi do pliku robots.txt.

Boty Google’s czytają plik robots.txt a więc w ten sposób trafią na link to mapy witryny wygenerowanej przez WordPressa, a więc teoretycznie nie musisz takiej mapy zgłaszać do Google’a jawnie.

Ale…

Nie wszystkie strony WordPressowe mają plik robots.txt.

Ten blog na przykład nie ma…

Czy moja strona na WordPressie posiada plik robots.txt?

WordPress automatycznie generuje plik robots.txt. Ten automatycznie tworzony przez WP to plik wirtualny i nie zobaczysz go w drzewie katalogów. Za to możesz go podejrzeć doklejając do nazwy swojej domeny: /robots.txt.

Tak wygląda klasyczny plik robots.txt generowany automatycznie przez WordPressa:

Plik robots.txt generowany automatycznie przez WordPressa
Plik robots.txt generowany automatycznie przez WordPressa

A tak będzie wyglądać ten plik w WordPressie 5.5+ Mapa witryny zostanie dodana automatycznie:

Plik robots.txt generowany automatycznie przez WordPressa od wersji 5.5 zostanie wzbogacony o link do mapy strony
Plik robots.txt generowany automatycznie przez WordPressa od wersji 5.5 zostanie wzbogacony o link do mapy strony

Uwaga

Jeśli twój WordPress udostępniany jest poprzez podkatalog, tak jak ma to miejsce w przypadku tego bloga:- webfaces.pl/blog, plik robots.txt nie powstanie.

Czy to dobrze, czy źle, że generowanie mapy strony teraz będzie automatycznie?

Skoro autorzy WordPressa wprowadzają automatyczne generowanie mapy do silnika WordPress, to znaczy, że potrzeba jest i należałoby się spodziewać więcej korzyści niż problemów.

Ale czy tak rzeczywiście jest? Zdania są podzielone.

Co na plus?

Okazja do poprawienia SEO bez instalowania kolejnej wtyczki

Sitemapy pomagają (choć nie gwarantują) lepiej zindeksować naszą witrynę w wyszukiwarkach internetowych i przez to poprawić jej widoczność w sieci.

Jeśli potrzebujemy sitemapy, nie musimy już instalować kolejnej wtyczki.

Okazja do poprawienia SEO bez zgłaszania mapy strony do Google Search Console

WordPressowa sitemapa trafia automatycznie do pliku robots.txt generowanego przez WordPressa, który czytają pająki indeksujące. Więc teoretycznie nie trzeba nawet ręcznie jej zgłaszać do Google’a czy innych wyszukiwarek.

Przegląd wszystkich stron bloga w czytelnej formie

Zwróćmy uwagę, że WordPressowa mapa, mimo, że generowana z myślą o botach wyszukiwarkowych jest czytelna również dla człowieka (częściowo dzięki zastosowaniu xml-owego stylesheetu wp-sitemap-index.xsl – jak kogoś ciekawi dlaczego linki ułożone są w elegancką tabelkę typu zebra, gdzie co drugi wiersz jest szary, niech zerknie na ten plik: https://webfaces.pl/blog/wp-sitemap-index.xsl).

Dzięki przejrzystej formie mapy mamy okazję przypomnieć sobie, co my tam w tej naszej WordPressowej stronie trzymamy.

Być może znajdziemy elementy już dawno niewykorzystywane.

Tak było w moim przypadku.

W mojej mapie strony pojawiły się typy wpisów, których już dawno nie używam.

Jest więc okazja do posprzątania.

Co na minus?

Mapa strony - przeciwnicy

Jest wielu przeciwników wprowadzania site mapy do silnika WordPressa, tym bardziej, że nie można nią łatwo sterować z poziomu panelu.

Oto główne niepokoje:

  • W mapie witryny znajdą się strony, których nie chcemy zgłaszać do indeksów wyszukiwarek albo ich zgłaszanie kompletnie nie ma sensu (np. strona typu „Dziękuję za zakup” albo potwierdzenie wypisania z subskrypcji).
  • Często typy wpisów (Custom Post Types) są używane do przeróżnych nieszablonowych zastosowań i nie chcemy, żeby one wszystkie zostały uwzględnione w mapie.
  • Wiele stron ma już sitemapy i wielu użytkowników martwi się o potencjalne konflikty.
  • Teraz każdy będzie mógł zobaczyć listę użytkowników naszej witryny (ostatnia pozycja na site mapie to lista userów).

Sporo osób uważa, że sam mapa w WordPressie jest dobrym pomysłem, ale nie można ludzi zostawić bez kontroli (w formie przyjaznego panelu, a nie tylko API dla programistów), co można z niej usunąć.

Wchodzić w te mapy czy nie?

Jeśli jeszcze masz wątpliwości, czy mapa strony w silniku WordPressa to dobry pomysł, zacytuję Fernando Tellado, kontrybutora WordPressa i autora licznych wtyczek:

Wszystkie inne liczące się CMSy mają XML-owe mapy strony bezpośrednio w silniku (np. Magento, Prestashop, etc) i mapa strony to rzecz od dawien dawna w WordPressie oczekiwana, wskazywana w każdej ankiecie, gdzie użytkowników WordPressa pytano o brakujące funkcje. Uważam, że zalety zdecydowanie przebijają wady.

Fernando Tellado
https://make.wordpress.org/core/2019/06/12/xml-sitemaps-feature-project-proposal/#comment-35980

A ty co myślisz o mapie witryny bezpośrednio w WordPressie?

Używasz sitemap na swoich stronach?

Cieszy cię informacja, że teraz mapę witryny WordPress wygeneruje nam sam?

24 komentarze do “Mapa strony teraz w każdym WordPressie. Co musisz wiedzieć”

  1. Podejście do wdrożenia sitemapy zalatuje wdrożeniem gutenberga 🙁

    Mapa strony bezpośrednio w WordPressie to świetna sprawa ale mapa na którą nie masz wpływu, żadnej konfiguracji, nawet brak możliwości wyłączenia w sposób przyjazny dla użytkownika to strzał w kolano.

    Teraz na gwałt trzeba będzie przerabiać miliony stron żeby to wyłączyć bo komuś się śpieszyło, albo ma jakiś inny niezbyt przyjazny dla użytkowników cel.

    Z jednej strony idą w stronę użytkownika poprzez robienie wyklikiwalnego co się da, ale to co będzie stanowić poważny problem (przynajmniej u niektórych) wymaga już działania programisty bo nie można tego prosto wyłączyć jak np. komentarzy (nie mówiąc o konfiguracji).

    Czyli powtórka z rozrywki pomysł dobry sposób wdrożenia beznadziejny.

    BTW efekt działania czyli sama mapa to też bubel używa dwóch znaczników <url> i <loc> a to moim zdaniem stanowczo za mało w stosunku do tego https://www.sitemaps.org/protocol.html.
    Odnoszę wrażenie że kiedyś aktualizacje były bardziej kompletne, bardziej dopracowane, albo widzę teraz więcej :/

    Wtyczka wyłączająca te mapy będzie bardzo popularna :> a taka co umożliwi ich skonfigurowanie w sensowny sposób zgodnie z dokumentacją wskazaną wyżej pewnie nawet da się sprzedać.

  2. Mam dokładnie takie same zdanie jak Arek. Gutenberg jak i nowość w postaci map XML mogła spokojnie funkcjonować jako „oficjalna wtyczka”. Mogły to już być wtyczki preinstalowane i wyłączone, które można łatwo włączyć. W poradnikach i kursach dotyczących WordPressa mogłaby być w tedy informacja czy to warto włączyć czy nie. Tak samo jak instalujemy WooCommerce czy inne rzeczy…

    Podczas kiedy twórcy WordPressa dodają funkcjonalności „pod porównywanie” bo innej motywacji trudno się doszukać, mogliby oni wprowadzić obsługę dużo ważniejszych rzeczy, np. natywnego wsparcia dla formatu webp czy jakiś łatwy sposób na dodawanie grafik SVG.

    Po tej aktualizacji będę miał po prostu kolejną rzecz do wyłączenia. Google jasno określa kiedy stosować mapy stron i w cale nie jest tak, że każda podstrona musi być indeksowana – co z resztą fajnie jest zaznaczone w Twoim artykule. Dodatkowo, mapy marnują budżet indeksowania i mogą ukrywać problemy z linkowaniem wewnętrznym. Mogą też unieważniać instrukcje noindex i nofollow. To też kolejna komplikacja przy przenoszeniu strony nie mówiąc nic o kompatybilności z niestandardowymi wtyczkami, które generują strony typowo techniczne. Każdy wpis powinien mieć (tak jak w Joomla) ustawienie czy podstrona ma być indeksowana czy nie.

  3. Moim zdaniem bardzo dobrze, wiele stron w ogóle nie posiadało sitemapy co utrudniało indeksacje dla robota Google. Na pewno jest to ruch na plus, tak samo jak robot.txt :)) niby taka podstawa w tworzeniu strony, a 50% stron tego nie posiadała.

    1. Shou, jeśli zazwyczaj dodawałeś mapę wygenerowaną przez wtyczkę Yoast i nie miałeś zastrzeżeń, to nie widzę powodu, żeby teraz ten zwyczaj zmieniać. Na wszelki wypadek bym wyłączyła wówczas tę WordPressową (są już wtyczki wyłączające ją), żeby nie było niepotrzebnie dostępnych dwóch.

      1. Wtyczka z Yoast uwzględniała, czy strona ma ustawione noindex lub canonical na inną podstronę. Czy defaultowa mapa WP też tak robi? Jeśli wykluczę np. z indeksowania cała taksonomię /tag/ lub /category/ tudzież strony autorów, to czy WP będzie te URL wykluczał z sitemap?

        Z ciekawostek, właśnie na swoich blogach zaktualizowałem WP i posprawdzałem, jak to wygląda. Tam, gdzie mam zainstalowanego Yoasta, /wp-sitemap.xml automatycznie przekierowuje do generowanego przez Yoast adresu /sitemap_index.xml.

        Wtyczka All In One SEO powoduje usunięcie /wp-sitemap.xml, czego efektem jest 404.

        Testował ktoś w połączeniu z RankMath?

  4. I tak trzeba było instalować za każdym razem Yoasta, więc jeśli WordPress domyślnie nie będzie oferował czegoś takiego jak Yoast, to mapa strony domyślna na WP to trochę bez sensu. No chyba, że weźmiemy pod uwagę ilość osób, które nie posiadają takiej wtyczki pod SEO – to na pewno im pomoże 🙂

    1. Sprawdź, czy masz wersję WP minimum. 5.5, oraz czy indeksowanie strony w wyszukiwarkach jest włączone (Wp-Admin> Ustawienia> Czytanie> checkbox ” Proś wyszukiwarki o nieindeksowanie tej witryny”)

  5. Dobrze napisany poradnik, dziękuję! Myślę, że mapę strony warto wygenerować, np. w przypadku migracji naszego serwisu do skryptu WordPress. Jest to bardzo pomocne w przypadku indeksacji w wyszukiwarce. Nie od dziś wiadomo, że w działaniach optymalizacyjnych nieodzownym jest umożliwienie robotom wyszukiwarek dostępu do naszej witryny. Oczywiście to tylko niewielka część działań, które należy wykonać by uzyskać efekt zwiększonego ruchu użytkowników z wyników organicznych.

  6. Agnieszko, wiesz może w jaki sposób osiągnąć efekt by własny typ posta nie był widoczny w sitemap, a najlepiej także nigdzie indziej (rss, feed, poprzez rest itd.)? Nie znam wszystkich mechanizmów WordPressa – mam nadzieję, że coś podpowiesz 🙂

    Obecnie tworzę w pliku function sprawdzanie czy użytkownik ma uprawnienia do przeglądania (dzięki zmiennej w „$_SESSION”) i poprzez „stripos($_SERVER[’REQUEST_URI’], 'slug-posta’)” wykrywam wywołanie typu posta – przenoszę nieuprawnione osoby na stronę logowania. Funkcje typu get_post_type() nie działają z tego poziomu dlatego używam stripos…
    Tworzenie sitemap, rss, atom, rdf, dostęp poprzez rest i nie wiem co tam jeszcze WP posiada 😉 w ten sposób będzie zatrzymane? Orientujesz się czy stripos na REQUEST_URI zatrzyma te i inne mechanizmy o których być może nie wiem – czy jednak są one uruchamiane z innego poziomu bez udziału function?
    Pozdrawiam i dziękuję za wiele cennych rad na blogu 🙂

  7. Dziękuję, zawsze znajdziesz jakieś fajne szczegóły, które warto wykorzystywać. Dobrze, że masz chęć dzielić się swoją wiedzą z innymi.

  8. Nie łatwiej zainstalować podstawową wtyczkę do SEO – Yoast i mapa strony będzie działała? Do tego będziemy mieli pełną kontrolę co chcemy, a czego nie indeksować.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.