Strona główna  /  Wtyczki  /  Jak wygenerować mapę strony w WordPress bez użycia wtyczki?

Nowoczesny laptop na biurku wyświetlający kod strony oraz strukturę mapy witryny w domowym biurze.

Jak wygenerować mapę strony w WordPress bez użycia wtyczki?

Nie potrzebujesz wtyczki, aby wygenerować mapę strony w WordPressie. Od wersji 5.5 system tworzy ją automatycznie pod adresem /wp-sitemap.xml. Własny kod PHP ma sens głównie wtedy, gdy potrzebujesz niestandardowej selekcji adresów lub obsługi nietypowych typów treści.

Jak sprawdzić natywną mapę strony WordPress?

Wbudowany generator jest dla większości witryn wystarczający. Tworzy mapę XML bez instalowania dodatkowego oprogramowania i aktualizuje ją wraz ze zmianami treści.

Sprawdzenie działania zajmuje kilka chwil:

  1. Otwórz w przeglądarce adres swojej witryny z końcówką /wp-sitemap.xml, na przykład https://example.com/wp-sitemap.xml.
  2. Sprawdź, czy wyświetla się dokument XML albo indeks zawierający odnośniki do kilku map, takich jak mapa wpisów, stron lub taksonomii.
  3. W panelu WordPress przejdź do ustawień czytania i upewnij się, że witryna nie jest oznaczona jako przeznaczona do zniechęcania wyszukiwarek do indeksowania.
  4. Zweryfikuj, czy adresy znajdujące się w mapie są publiczne, aktualne i przeznaczone do indeksowania.

Jeżeli strona działa na WordPressie 5.5 lub nowszym, a adres odpowiada poprawną treścią, zwykle nie trzeba robić nic więcej. Natywny sitemap jest rozwiązaniem standardowym i nie wymaga stałej konserwacji.

Nie dodawaj własnego generatora bez wyłączenia lub świadomego zastąpienia funkcji systemowej. Dwa mechanizmy mogą publikować różne mapy, nadpisywać te same adresy albo utrudniać diagnozę. Sam sitemap nie wymusza indeksowania i nie poprawia pozycji. Informuje Googlebota, jakie adresy warto odwiedzić.

Własna mapa strony w PHP – kiedy ma sens?

Ręczna implementacja może być uzasadniona, gdy potrzebujesz pełnej kontroli nad listą adresów, obsługujesz niestandardowy typ wpisów albo korzystasz z rozwiązania, którego nie obejmuje domyślna konfiguracja WordPressa. Wymaga jednak znajomości PHP i późniejszego utrzymania kodu.

Przed edycją plików przygotuj:

  • Kopię zapasową plików witryny i bazy danych.
  • Dostęp przez FTP, SFTP albo menedżer plików hostingu.
  • Aktywny motyw potomny, aby aktualizacja motywu głównego nie usunęła zmian.
  • Możliwość wyłączenia natywnego sitemapu, jeśli własny kod ma go zastąpić.

Przykładowy generator XML dla wybranego typu wpisów

Poniższy kod publikuje mapę pod adresem /custom-sitemap.xml i pobiera opublikowane wpisy typu produkt. Wklej go do pliku functions.php motywu potomnego. Nie dodawaj otwierającego znacznika <?php, jeśli plik już go zawiera.

add_action( 'init', 'custom_sitemap_add_rewrite_rule' );

function custom_sitemap_add_rewrite_rule() {
    add_rewrite_rule(
        '^custom-sitemap\.xml$',
        'index.php?custom_sitemap=1',
        'top'
    );
}

add_filter( 'query_vars', 'custom_sitemap_add_query_var' );

function custom_sitemap_add_query_var( $vars ) {
    $vars[] = 'custom_sitemap';
    return $vars;
}

add_action( 'template_redirect', 'custom_sitemap_render' );

function custom_sitemap_render() {
    if ( '1' !== get_query_var( 'custom_sitemap' ) ) {
        return;
    }

    $query = new WP_Query(
        array(
            'post_type'              => 'produkt',
            'post_status'            => 'publish',
            'posts_per_page'         => -1,
            'no_found_rows'          => true,
            'ignore_sticky_posts'    => true,
            'fields'                 => 'ids',
        )
    );

    header( 'Content-Type: application/xml; charset=' . get_bloginfo( 'charset' ), true );

    echo '<?xml version="1.0" encoding="' . esc_attr( get_bloginfo( 'charset' ) ) . '"?>';
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

    foreach ( $query->posts as $post_id ) {
        echo '<url>';
        echo '<loc>' . esc_url( get_permalink( $post_id ) ) . '</loc>';
        echo '<lastmod>' . esc_html( get_post_modified_time( 'c', true, $post_id ) ) . '</lastmod>';
        echo '</url>';
    }

    echo '</urlset>';
    exit;
}

Po dodaniu kodu otwórz w panelu WordPress sekcję Ustawienia → Bezpośrednie odnośniki i zapisz ustawienia bez wprowadzania zmian. Odświeża to reguły adresów. Następnie sprawdź /custom-sitemap.xml.

W przykładzie zapytanie zwraca wszystkie opublikowane wpisy wybranego typu. Przy dużej liczbie adresów nie pobieraj ich bez ograniczeń do jednego pliku. Standard Sitemap XML przewiduje maksymalnie 50 000 adresów lub 50 MB nieskompresowanego pliku. Większą witrynę trzeba podzielić na kilka map i opublikować indeks sitemap.

Jeśli własna mapa ma zastąpić generator WordPressa, wyłącz go dopiero po sprawdzeniu nowego rozwiązania. Możesz użyć filtra:

add_filter( 'wp_sitemaps_enabled', '__return_false' );

Nie wyłączaj tej funkcji tylko po to, aby skopiować natywny mechanizm. W takim scenariuszu własny kod zwiększa ryzyko błędów, a nie daje realnej korzyści.

Natywny sitemap czy własny kod?

Cecha Wbudowany sitemap WordPress 5.5+ Własny kod PHP
Wdrożenie Nie wymaga instalacji ani programowania Wymaga edycji motywu potomnego
Utrzymanie Obsługiwane przez rdzeń WordPressa Wymaga kontroli po aktualizacjach
Wydajność Rozwiązanie zoptymalizowane dla typowych zastosowań Zależy od zapytań i konstrukcji kodu
Elastyczność Ograniczona do funkcji rdzenia Możliwość własnego filtrowania adresów
Ryzyko błędu Niskie przy standardowej konfiguracji Wyższe, zwłaszcza przy dużej witrynie

Dla zwykłego bloga, strony firmowej lub sklepu korzystającego ze standardowych typów treści najlepszym wyborem pozostaje natywny adres /wp-sitemap.xml. Własny generator warto wdrażać tylko wtedy, gdy konkretne wymaganie techniczne uzasadnia dodatkowy kod i jego późniejsze utrzymanie.

Redakcja wpinternals.pl

WordPressa znamy od kuchni – budujemy na nim strony, migrujemy serwisy i optymalizujemy ich wydajność. Piszemy o wtyczkach, motywach, hostingu i bezpieczeństwie tak, by poradzili sobie także początkujący. Dbamy o to, by Twoja strona była szybka, stabilna i bezpieczna.

Może Cię również zainteresować

Potrzebujesz więcej informacji?