Åpne kildekoden til siden din (Ctrl+U / Cmd+Option+U). Se på <head>-seksjonen. Ser du dusinvis av kodelinjer du ikke forstår? De fleste av dem er unødvendige i 2026: legacy-manifester, kommentarfeeds, emoji-polyfills og generator-metatagger fra tiden da Windows Live Writer fortsatt var relevant.
Dette er ikke kosmetikk. Hver unødvendige <link> og hvert skript koster bytes, parsing-tid og noen ganger DNS-oppslag. På en WooCommerce-butikk med mange plugins hoper taggene seg raskt opp. Et ryddig wp_head()-output gjør feilsøking enklere og reduserer angrepsflaten via versjonslekkasje.
Referanser: wp_head(), WordPress Developer Handbook og web.dev om LCP.
Problemet: head-bloat i WordPress
En fersk WordPress-installasjon med standardtema leverer typisk blant annet:
- RSS-lenker for innlegg, kategorier, tagger og kommentarer
wlwmanifestfor Windows Live Writer- Really Simple Discovery (
rsd_link) meta name="generator"med core-versjonen- Emoji-detection-skript pluss stiler
- Shortlink-tagger (
?p=123) - Adjacent-post-lenker (
rel="prev"/rel="next") - REST- og oEmbed-discovery-lenker
| Element | Nytte i 2026 | Risiko ved fjerning |
|---|---|---|
| Kommentarfeed | Svart lav | Lav |
Hovedfeed /feed/ | Middels (nyhetsbrev, lesere) | Middels |
| wlwmanifest / RSD | Legacy | Lav |
| Generator-meta | Ingen (lekkasje) | Lav |
| Emoji-skript | Nettlesere nativt | Lav |
| REST-discovery | Høy ved headless / app | Høy hvis du bruker API |
| Shortlink | Lav | Lav |
Tabellen er beslutningsgrunnlaget: ikke riv ut alt, fjern legacy og lekkasje, behold API bevisst.
Hvorfor rydde i head?
Ytelse
For opprydding ser du ofte 10–20 ekstra tagger og et emoji-skript fra s.w.org. Etter opprydding synker HTML-størrelsen, mindre parser-arbeid, og i PageSpeed-spor mangler de overflødige requestene. Effekten er tydeligere på mobilnett i Norge enn på fiber på kontoret.
Sikkerhet og informasjonslekkasje
meta name="generator" content="WordPress x.y.z" avslorer core-versjonen. Det er ikke et exploit i seg selv, men en invitasjon for scannere til a sjekke kjente CVE-er. Det samme gjelder versjonsquery på tema-CSS. Fjern generatoren; patch core, tema og plugins uansett.
Vedlikehold
En slank head gjør staging-diffs lesbare. Når et plugin plutselig legger inn tre prefetch-hints, ser du det med en gang. I revisjoner for norske SMB-kunder er «ren head» ofte første raske gevinst for man går los på Redis eller objektcache.
1. RSS for kommentarer og ekstra feeds
WordPress genererer en separat RSS-feed for hvert innlegg, kategori, tag og kommentarer. Hvis du ikke driver et nyhetsnettsted der folk abonnerer på kommentartradar via RSS-leser, er det bare ressursslosing.
// Fjern RSS-lenker for kommentarer
add_filter( 'feed_links_show_comments_feed', '__return_false' );
// Fjern ekstra feeds (kategorier, tagger, forfattere)
remove_action( 'wp_head', 'feed_links_extra', 3 );
// Bare hvis du virkelig ikke trenger hovedfeeden:
// remove_action( 'wp_head', 'feed_links', 2 );La feed_links sta hvis Mailchimp, Buttondown eller et podkastoppsett leser site-feeden. Kommentar- og ekstra feeds kan du som regel skru av på bedriftssider.
2. Windows Live Writer og RSD
Når brukte du sist Windows Live Writer til a blogge? WordPress legger fortsatt til manifest-lenken. Really Simple Discovery var ment for remote publishing og er irrelevant for moderne workflows.
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'rsd_link' ); // Really Simple DiscoveryDette fjerner typisk:
<link rel="wlwmanifest" type="application/wlwmanifest+xml" ...><link rel="EditURI" type="application/rsd+xml" ...>
3. WP emoji
WordPress laster JS og CSS for a konvertere tegn som :) til bilder. Moderne nettlesere har innebygd emoji-stotte. Skriptet er bare en ekstra HTTP-foresporsel pluss DNS-prefetch til s.w.org.
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' );Hvis redaksjonen bruker mye emoji i e-post og Outlook-visning er kritisk, test mail-filtrene enkeltvis. For frontend-ytelse holder wp_head- og style-hooks.
4. WordPress-versjon (generator)
Av sikkerhetsgrunner bor du ikke vise versjonen i frontend.
remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_empty_string' );Dette toner også generator-tagger i feeds. Det erstatter ikke oppdateringer: core, temaer og plugins skal fortsatt patches. Du fjerner bare skiltet på ytterdoren.
5. Shortlinks og adjacent posts
Shortlinks (?p=123) og rel="prev" / rel="next" i head brukes sjelden av moderne crawlere på en nyttig mate. De blaser opp HTML.
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. REST og oEmbed: bestem bevisst
// Fjern bare hvis frontend ikke trenger discovery:
// 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 );Headless-oppsett, mobilapper og mange page builders forventer REST-discovery. På en klassisk bedriftsblogg med lite API-bruk kan du fjerne lenkene. På headless WordPress med Next.js eller Astro som frontend lar du dem sta.
Ferdig «clean head»-snippet
Legg dette heller som must-use-plugin under wp-content/mu-plugins/wppoland-clean-head.php enn bare i parent-temaets functions.php.
<?php
/**
* Plugin Name: WPPoland Clean Head
* Description: Fjerner legacy-tagger fra wp_head.
* Author: wppoland.com
*/
function wppoland_cleanup_head() {
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' );Betinget opprydding på spesifikke maler
Noen ganger vil du beholde feeds bare på forsiden:
add_action( 'wp', function () {
if ( ! is_front_page() ) {
remove_action( 'wp_head', 'feed_links', 2 );
}
} );Eller drepe emojis bare i frontend og la dem sta i admin. Betinget logikk holder snippeten vedlikeholdbar, i stedet for a stable fem overlapping clean-up-plugins.
Test etter deploy
- Åpne inkognito, sjekk kildekode: generator, wlwmanifest, emoji-script borte?
- Network-fane: ingen request til
wp-emoji-release.min.js. - Hovedfeed
/feed/fortsatt tilgjengelig hvis onsket. - Gutenberg-editor og REST-kall (lagre innlegg) fortsatt gronne.
- WooCommerce-checkout raskt gjennom klikket hvis butikk er aktiv.
I norske prosjekter med streng CSP ser du ofte mindre console-stoy etter opprydding fordi emoji-CDN og prefetch-hints forsvinner. Det er en bieffekt, ikke erstatning for en ekte CSP-policy.
Det du ikke bor fjerne
viewportog charset-meta (tema)- Canonical og hreflang (SEO-plugin / tema)
- Kritiske preloads du har satt bevisst
- Cookie- og samtykkeskript (juridisk nødvendig)
- Schema/
application/ld+jsonnår du bruker det
Head-opprydding betyr legacy ut, ikke «slett alt usynlig».
Samspill med caching og CDN
Head-opprydding og full-page-cache forsterker hverandre. Faerre tagger betyr mindre HTML i edge-cachen. Toem HTML-cachen etter deploy (ikke bare nettleseren), ellers sjekker du fortsatt den gamle generator-linjen. Med Cloudflare eller en norsk hoster med Varnish: hold cache-nokler slik at innloggede brukere ikke blander Cleanup-output med anonyme besok.
Plugin-cleaner og MU-plugin samtidig er redundant. Velg en kilde til sannhet. I revisjoner for byråer i Oslo og Bergen ser vi ofte tre cleanup-plugins pluss temakode: plugin A fjerner REST-lenker, plugin B legger dem tilbake for oEmbed, og ingen vet hvorfor head vokser igjen.
Redaksjonell sjekkliste for go-live
- Speil staging mot produksjonsplugins (ikke bare standardtema).
- Sammenlign kildekode for forside, innlegg og eventuell butikkside.
- Test feed-URL manuelt i en reader hvis marked bruker den.
- Redaktor lagrer et Gutenberg-innlegg uten REST-feil.
- Monitoring: notér HTML-størrelse på
/for/etter opprydding (enkel diff i ticketet).
Disse fem stegene tar under en time og stopper den typiske «vi drepte emojis og nyhetsbrevet døde»-regresjonen. På nettbutikker med Vipps eller Klarna i checkout: klikk gjennom betaling på staging etter head-endringer, sa ingen tredjepartsskript ble fjernet ved et uhell. Noter HTML-bytes for og etter i deploy-ticketet; da har du bevis når noen spor om gevinsten var verd risikoen. Samme sjekk etter hvert cache-plugin-update.
Neste steg
Hvis du vil ta head-bloat, tredjepartsskript og Core Web Vitals samlet, ta kontakt via kontaktsiden. Mer om hastighet: WordPress-hastighetsoptimalisering.







