Rozszerzona i aktualna wersja tego tematu: Jak oczyścić nagłówek WordPress (usuń RSS, emoji, shortlinki).
Otwórz kod źródłowy swojej strony w przeglądarce (Ctrl+U lub Cmd+Option+U). Przyjrzyj się uważnie sekcji <head>. Czy widzisz tam kilkanaście lub kilkadziesiąt linii kodu, których przeznaczenia nie znasz? Większość z nich w 2026 roku to zwykły balast: przestarzałe manifesty dla dawno niewspieranych programów, osobne kanały RSS dla każdego wątku komentarzy, polyfille dla emotikonów oraz tagi zdradzające wersję WordPressa.
Czyszczenie nagłówka to nie tylko zabieg kosmetyczny. Każdy zbędny element <link> i niepotrzebny skrypt powiększa wagę dokumentu HTML, wydłuża czas parsowania przez przeglądarkę i może generować dodatkowe zapytania DNS. W rozbudowanych sklepach WooCommerce z wieloma wtyczkami narzut ten szybko się kumuluje. Czyste wywołanie wp_head() ułatwia debugowanie i ogranicza ryzyko wycieku informacji o wersji systemu.
Oficjalne źródła dokumentacji: funkcja wp_head(), Podręcznik dewelopera WordPress oraz materiały web.dev dotyczące metryki LCP.
Co WordPress domyślnie wstawia do sekcji head
Standardowa instalacja WordPressa generuje w nagłówku szereg automatycznych wpisów:
- Kanały RSS dla wpisów, kategorii, tagów oraz komentarzy
- Plik manifestu
wlwmanifestdla programu Windows Live Writer - Odnośnik Really Simple Discovery (
rsd_link) - Tag
meta name="generator"z dokładnym numerem wersji WordPressa - Skrypt detekcji emotikonów oraz powiązane style CSS
- Odnośniki do skróconych adresów URL (
?p=123) - Linki relacji wpisów sąsiadujących (
rel="prev"orazrel="next") - Linki discovery dla REST API i oEmbed
| Element nagłówka | Przydatność w 2026 roku | Ryzyko usunięcia |
|---|---|---|
| Feed komentarzy | Znikoma | Bardzo niskie |
Główny feed /feed/ | Średnia (czytniki, newslettery) | Średnie |
| wlwmanifest oraz RSD | Przestarzałe (legacy) | Bardzo niskie |
| Generator wersji | Brak (potencjalny wyciek) | Bardzo niskie |
| Skrypty emoji | Zastąpione przez silnik przeglądarki | Bardzo niskie |
| REST API discovery | Istotne w headless i aplikacjach | Wysokie przy integracjach API |
| Shortlink | Znikoma | Bardzo niskie |
Tabela stanowi praktyczną wskazówkę decyzyjną: usuwamy przestarzałe elementy i tagi ujawniające wersję systemu, zachowując te odnośniki, które są świadomie wykorzystywane przez aplikacje zewnętrzne.
Dlaczego warto oczyścić sekcję head w WordPressie
Zysk wydajnościowy po usunięciu zbędnych tagów
Przed optymalizacją nagłówek zawiera często kilkanaście nadmiarowych znaczników oraz skrypt pobierany z serwerów s.w.org. Usunięcie niepotrzebnych deklaracji zmniejsza objętość kodu HTML, przyspiesza budowanie drzewa DOM i eliminuje zbędne połączenia sieciowe. Efekt jest szczególnie zauważalny dla użytkowników na urządzeniach mobilnych przy słabszym zasięgu.
Bezpieczeństwo i ochrona przed wyciekiem wersji
Znacznik meta name="generator" content="WordPress x.y.z" informuje każdego robota o wersji silnika. Nie jest to bezpośrednia luka, ale ułatwia zautomatyzowanym skanerom typowanie podatności znanych z publicznych baz CVE. Podobnie działają parametry wersji dopisywane do stylów CSS. Usunięcie generatora eliminuje niepotrzebną wizytówkę dla skanerów.
Przejrzystość kodu i łatwiejsze testy stagingowe
Uporządkowany nagłówek upraszcza analizę kodu w środowiskach deweloperskich. Kiedy nowa wtyczka niespodziewanie wstrzykuje dodatkowe skrypty lub reguły prefetch, natychmiast rzuca się to w oczy podczas inspekcji diffów.
1. Usuwanie linków do feedów komentarzy i kategorii
WordPress automatycznie tworzy osobne kanały RSS dla każdego posta, kategorii oraz komentarzy. O ile witryna nie jest portalem publicystycznym, którego odbiorcy subskrybują komentarze w czytnikach, linki te stanowią jedynie zbędny szum informacyjny:
// Wyłączenie linków do feedów komentarzy
add_filter( 'feed_links_show_comments_feed', '__return_false' );
// Wyłączenie dodatkowych feedów (kategorie, tagi, autorzy)
remove_action( 'wp_head', 'feed_links_extra', 3 );
// Wyłącznie w sytuacji, gdy główny feed nie jest nikomu potrzebny:
// remove_action( 'wp_head', 'feed_links', 2 );Główny odnośnik feed_links warto pozostawić, jeśli z kanału korzystają narzędzia do automatyzacji newslettera lub agregatory treści.
2. Usunięcie wlwmanifest oraz linku RSD
Windows Live Writer to program z odległej epoki, jednak WordPress wciąż generuje do niego odnośnik w nagłówku. Z kolei Really Simple Discovery (RSD) służył do zdalnej edycji wpisów przez protokół XML-RPC. Współcześnie oba te rozwiązania są bezużyteczne:
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'rsd_link' );Powyższe instrukcje usuwają z kodu:
<link rel="wlwmanifest" type="application/wlwmanifest+xml" ...><link rel="EditURI" type="application/rsd+xml" ...>
3. Wyłączenie skryptów i stylów emotikonów (emojis)
Przez lata WordPress ładował dedykowany skrypt JavaScript oraz reguły CSS, aby zamieniać tekstowe znaki na graficzne emotikony. Współczesne przeglądarki i systemy operacyjne obsługują emoji natywnie. Domyślny skrypt to niepotrzebne zapytanie HTTP oraz prefetch do zewnętrznej domeny:
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );Dla wydajności frontendu kluczowe jest usunięcie hooków powiązanych z wp_head oraz drukowaniem stylów.
4. Ukrycie numeru wersji WordPressa (generator)
Ukrycie wersji silnika w kodzie źródłowym to podstawowa zasada higieny bezpieczeństwa:
remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_empty_string' );Filtr usuwa również deklarację generatora z nagłówków kanałów informacyjnych. Oczywiście nie zwalnia to z obowiązku regularnych aktualizacji, ale utrudnia wstępny rekonesans zautomatyzowanym botom.
5. Usunięcie shortlinków oraz rel prev i next
Odnośniki typu shortlink (?p=123) oraz deklaracje sąsiednich artykułów w nagłówku nie przynoszą korzyści współczesnym robotom wyszukiwarek, a jedynie zwiększają wielkość nagłówka:
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
remove_action( 'template_redirect', 'wp_shortlink_header', 11 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );6. Kontrola linków REST API i oEmbed w nagłówku
// Usuwać wyłącznie wtedy, gdy frontend nie korzysta z autowykrywania API:
// remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
// remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// remove_action( 'template_redirect', 'rest_output_link_header', 11 );Projekty headless bazujące na Next.js czy Astro oraz aplikacje mobilne często polegają na mechanizmie REST discovery. Na tradycyjnych stronach firmowych bez integracji zewnętrznych linki te można bezpiecznie wyłączyć.
Wdrożenie oczyszczania nagłówka jako wtyczka must-use (MU)
Zamiast modyfikować plik functions.php aktywnego motywu, znacznie pewniejszym rozwiązaniem jest utworzenie wtyczki typu Must-Use pod adresem wp-content/mu-plugins/wppoland-clean-head.php:
<?php
/**
* Plugin Name: WPPoland Clean Head
* Description: Usuwa zbędne tagi i przestarzały kod z nagłówka wp_head.
* Author: wppoland.com
*/
function wppoland_cleanup_head(): void {
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
add_filter( 'feed_links_show_comments_feed', '__return_false' );
add_filter( 'the_generator', '__return_empty_string' );
}
add_action( 'init', 'wppoland_cleanup_head' );Wtyczki umieszczone w folderze mu-plugins ładują się automatycznie i nie mogą zostać przypadkowo wyłączone w panelu administracyjnym ani nadpisane przy aktualizacji motywu.
Jak sprawdzić poprawność zmian w kodzie źródłowym
- Otwórz stronę w oknie incognito i sprawdź źródło: znaczniki generatora, wlwmanifest i skrypt emoji powinny zniknąć.
- W zakładce Sieć (Network) narzędzi deweloperskich upewnij się, że przeglądarka nie wykonuje zapytania po plik
wp-emoji-release.min.js. - Zweryfikuj, czy główny adres
/feed/pozostaje aktywny, jeżeli jest używany przez marketing. - Przetestuj zapisywanie wpisów w edytorze Gutenberg, aby upewnić się, że zapytania REST API w panelu działają prawidłowo.
- Przeklikaj ścieżkę zamówienia w sklepie WooCommerce.
Jakich tagów w sekcji head nie wolno usuwać
Czyszczenie nagłówka polega na usuwaniu przestarzałych elementów, a nie na kasowaniu wszystkiego, co niewidoczne dla oka. W nagłówku bezwzględnie powinny pozostać:
- Znaczniki
viewportoraz deklaracja kodowania znaków (charset) - Link kanoniczny (
canonical) oraz atrybutyhreflangdla wersji językowych - Skrypty obsługi zgód na pliki cookies (niezbędne prawnie)
- Ustrukturyzowane dane JSON-LD (Schema)
- Świadomie skonfigurowane tagi preconnect i preload dla kluczowych zasobów
Lista kontrolna przed wdrożeniem produkcyjnym
- Zmiany przetestowane w środowisku stagingowym z pełnym zestawem aktywnych wtyczek.
- Sprawdzony kod źródłowy strony głównej, pojedynczego wpisu oraz karty produktu.
- Potwierdzone działanie kanału RSS w zewnętrznym czytniku.
- Edytor Gutenberg zapisuje zmiany bez błędów komunikacji z API.
- Wyczyszczona pamięć podręczna na poziomie serwera (FastCGI / Varnish) oraz w usłudze CDN (Cloudflare).







