Affiliate-sider i WordPress feiler sjelden på «manglende strategi». De feiler på crawl-budsjett, feil rel-merking, JavaScript-omdirigeringer som Googlebot ikke følger på samme måte som en nettleser, og offer-vegger som ødelegger Core Web Vitals. Denne guiden er en teknisk sjekkliste for norske WordPress-nettsteder som publiserer sammenligninger, deal-sider og anmeldelser med affiliate-utgang.
Målet er ikke å «skjule» lenker. Målet er å la Google crawle og indeksere innholdssidene dine uten å blande inn parametre, klonede landingssider eller omdirigeringskjeder som ligner på cloaking.
Crawl og indeks av affiliate-sider
Skill mellom tre URL-typer i sitemap og i robots-logikk:
- Innholdssider (guider, sammenligninger, anmeldelser) - skal crawles og indekseres.
- Utgangs-URL-er (
/go/…,/anbefaling/…) - skal omdirigere brukeren, men trenger vanligvis ikke å ligge i sitemap og bør sjelden indekseres som egne dokumenter. - Sporings- og parameter-URL-er (
?ref=,?affid=, UTM på interne sider) - skal ikke bli eget indeksert innhold.
Sett noindex på rene omdirigerings-CPT-er hvis de noen gang returnerer HTML i stedet for en HTTP-omdirigering. En side som viser «Du sendes videre…» med meta-refresh er både dårlig UX og et crawl-problem. Bruk HTTP-status 302/307 (eller 301 bare når destinasjonen er permanent og du forstår cache-effekten) via wp_redirect() eller webserveren.
Hold intern lenking til utgangs-URL-er begrenset. Lenk fra innholdet til /go/produkt, ikke spre hundrevis av parametervarianter rundt i arkivet. Google Search Central sin veiledning om utgående lenker handler om å kvalifisere betalte lenker - ikke om å la crawleren indeksere hvert hopp i en affiliate-kjede.
I WordPress: ekskluder omdirigerings-CPT fra wp_sitemaps og fra XML-sitemap-plugins. Hvis du bruker Yoast, Rank Math eller lignende, skru av «include in sitemap» for den posttypen. Sjekk i Search Console at /go/-stier ikke dukker opp som «Crawled - currently not indexed» i stort volum; det er ofte et tegn på at HTML-sider med tynn tekst eksporteres i stedet for rene omdirigeringer.
Merking med rel=“sponsored” og nofollow
Google har siden 2019 bedt om at betalte og affiliate-lenker merkes med rel="sponsored". rel="nofollow" er fortsatt gyldig som hint, men sponsored er det tydeligere signalet for kommersielle utgående lenker. Dokumentasjonen for å kvalifisere outbound-lenker beskriver nettopp dette skillet.
Praktisk mønster i HTML:
<a href="https://partner.example/r?u=123"
rel="sponsored noopener noreferrer"
target="_blank">
Se tilbudet hos leverandøren
</a>noopener og noreferrer er sikkerhet og personvern når lenken åpnes i ny fane. De erstatter ikke sponsored.
Når skal du bruke begge? Hvis du er usikker på om en lenke er rent affiliate eller en blanding (f.eks. redaksjonell omtale med partneravtale), er rel="sponsored nofollow" et forsiktig valg. Unngå å merke alle utgående lenker på hele nettstedet som sponsored - det fortynner signalet og gjør det vanskeligere å vedlikeholde.
I blokk-editoren: ikke stol på at et affiliate-plugin «fikser rel automatisk» uten å inspisere den faktiske HTML-en. Mange plugins skriver bare nofollow, eller de skriver attributtet bare på lenker som går gjennom deres shortcode - mens manuelt limte URL-er slipper gjennom uten merking.
Filter i tema eller must-use plugin kan håndheve merking for kjente affiliate-domener:
add_filter('the_content', function (string $content): string {
// Eksempel: tving sponsored på kjente partner-domener.
// Tilpass domenelisten; ikke lim inn uvalidert HTML.
$partners = ['shareasale.com', 'partner.example'];
foreach ($partners as $host) {
$content = preg_replace_callback(
'#<a\s([^>]*href=["\']https?://(?:www\.)?' . preg_quote($host, '#') . '[^"\']*["\'][^>]*)>#i',
static function (array $m): string {
$attrs = $m[1];
if (preg_match('/\brel=/i', $attrs)) {
return '<a ' . $attrs . '>';
}
return '<a ' . $attrs . ' rel="sponsored noopener noreferrer">';
},
$content
);
}
return $content;
}, 20);Test med «Vis kilde» og med en crawl-tjeneste som henter den renderede HTML-en, ikke bare Gutenberg-preview.
Cloaking-risiko: hva Google kaller spam
«Pretty links» og interne /go/-stier er ikke cloaking i seg selv. Cloaking er å vise ulikt innhold eller ulik destinasjon til brukere og crawlers med den hensikt å manipulere rangering. Googles spam-policyer beskriver blant annet cloaking og sneaky redirects.
Risiko oppstår når:
- User-Agent-sniffing sender Googlebot til en «ren» anmeldelse og vanlige brukere til en affiliate-landing.
- Geo- eller IP-baserte regler bytter destinasjon uten at det er tydelig for brukeren.
- JavaScript viser én URL i
href, menonclicksender brukeren et annet sted. - Meta-refresh eller
window.locationhopper videre før siden er lesbar.
Hold omdirigeringslogikken identisk for alle klienter. Hvis du trenger A/B-testing av destinasjon, gjør det etter klikk med server-side logging - ikke ved å servere forskjellig HTML basert på crawler-strenger.
WordPress-plugins som lover «smart cloaking» eller «hide affiliate from Google» er røde flagg. Du skal ikke skjule affiliate-forholdet for Google. Du skal merke det og holde utgangs-URL-ene utenfor indeks hvor det er hensiktsmessig.
JavaScript-omdirigeringer som antipattern
En vanlig feil i deal-sider og «offer walls» er å bruke JS for å sende brukeren videre:
<!-- Unngå dette som primær omdirigering -->
<script>
window.location.href = 'https://partner.example/r?u=123';
</script>Problemer:
- Crawlere kan behandle JS-navigasjon annerledes enn HTTP
Location. - Feil i skriptet lar brukeren sitte på en tom side.
- Sporingspiksler og cookie-samtykke rekker ikke å kjøre før hoppet.
- Skjermlesere og brukere med redusert JS får dårligere opplevelse.
Foretrekk HTTP-omdirigering. I WordPress:
add_action('template_redirect', static function (): void {
if (!is_singular('affiliate_links')) {
return;
}
$url = get_post_meta(get_the_ID(), 'destination_url', true);
if (!is_string($url) || $url === '') {
return;
}
// Valider at URL er absolutt https før redirect.
if (!wp_http_validate_url($url)) {
return;
}
wp_redirect($url, 302);
exit;
});På Nginx (raskere, ingen PHP-bootstrap):
location /go/hosting {
return 302 https://partner.example/?ref=EXAMPLE;
}Hvis du må vise en mellomside (juridisk krav, cookie-banner før utgang), gjør den til en ekte HTML-side med synlig innhold og en vanlig <a rel="sponsored">-lenke. Ikke erstatt lenken med et umiddelbart JS-hopp.
Core Web Vitals på offer-vegger og deal-sider
Affiliate-sider samler ofte mange logoer, «beste tilbud»-bokser, sticky CTA-er og tredjeparts widgets. Det treffer LCP, INP og CLS hardt. Page experience i Google Search Central er fortsatt knyttet til brukbare signaler - og selv når rangeringseffekten er begrenset, påvirker treghet konvertering og crawl-dybde.
Typiske CWV-feil på affiliate-sider:
- LCP: hero med ukomprimert PNG, store partner-logo-rader lastet uten
width/height, late fonts som blokkerer tekst. - INP: klikk på «Vis pris» som henter data synkront, tunge accordion-skript, flere analytics-biblioteker.
- CLS: banners som skyver innhold etter load, cookie-banner uten reservert plass, bilder uten dimensjoner.
Tiltak som faktisk hjelper i WordPress:
- Last affiliate-widgeter kun på maler som trenger dem (
wp_enqueue_scriptmed betingelse), ikke globalt. - Bruk
loading="lazy"på logo-rader under folden; hold LCP-bildet eager med tydelige dimensjoner. - Unngå å injisere hele CSS/JS-pakken til Pretty Links / ThirstyAffiliates på forsiden hvis du bare trenger omdirigeringer.
- Bytt klient-side «pris-widgets» med statiske tall du oppdaterer selv når det er mulig - færre tredjeparts-requests.
WordPress sin egen performance-dokumentasjon under advanced administration dekker caching, objektcache og generelle ytelsesprinsipper. Bruk den før du legger til enda et «speed plugin» oppå affiliate-stacken.
Mål med Lighthouse eller CrUX på de faktiske deal-URL-ene, ikke bare på startsiden. En rask forside skjuler ofte en treg sammenligningsside.
Parameter- og kanonisk hygiene
Affiliate-trafikk elsker query-strenger. Problemet starter når de samme strengene lekker inn på dine egne URL-er:
- Interne lenker med
?utm_source=newslettersom blir indeksert som separate dokumenter. - Canonical som peker på feil variant (parameter-URL som canonical, eller omvendt).
- Soft-404 på
/go/gammel-kampanjesom returnerer 200 med «tilbudet er utløpt».
Følg Googles veiledning om å konsolidere duplikat-URL-er: én kanonisk innholdsside, konsistent rel="canonical", og undgå at parametervarianter konkurrerer.
I praksis:
- Sett canonical på innholdssider til den rene stien uten UTM.
- La ikke
/go/-sider senderel="canonical"til partnerens landingside (det er ikke ditt innhold). - Returner
410eller404for døde utgangs-slugger, ikke en generisk 200 med tyndt innhold. - I Search Console: bruk URL-parameter-håndtering sparsomt; foretrekk å aldri generere de duplikatene internt.
WordPress-eksempel for å strippe vanlige sporingsparametre fra canonical (via temaets wp_get_canonical_url-filter, tilpass etter behov):
add_filter('get_canonical_url', static function (string $canonical): string {
$parts = wp_parse_url($canonical);
if (empty($parts['query'])) {
return $canonical;
}
parse_str($parts['query'], $query);
unset($query['utm_source'], $query['utm_medium'], $query['utm_campaign'], $query['fbclid']);
$path = ($parts['scheme'] ?? 'https') . '://' . ($parts['host'] ?? '') . ($parts['path'] ?? '/');
return $query ? $path . '?' . http_build_query($query) : $path;
});Ikke bruk canonical som plaster for cloaking. Canonical sier «dette er den foretrukne kopien av mitt innhold». Den erstatter ikke korrekt rel på betalte utgående lenker.
Avsløring uten keyword-stuffing
Markedsføringsloven og bransjepraksis (og lesernes tillit) krever at affiliate-forholdet er tydelig. SEO-feilen er å gjenta «affiliate-lenke affiliate-lenke affiliate-lenke» i hvert avsnitt, i title-taggen og i H2-er.
Bedre mønster:
- Én synlig avsløring nær toppen av artikkelen, før første kommersielle lenke.
- Kort merking ved konkrete anbefalinger («Partnerlenke») uten å fylle brødteksten med juridisk prosa.
- Samme tekstblokken overalt via blokkmønster eller shortcode, så du ikke glemmer den på eldre innlegg.
function wpp_affiliate_disclosure_shortcode(): string {
return '<p class="affiliate-disclosure" role="note">'
. 'Noen lenker er betalte partnerlenker. Vi kan motta provisjon hvis du kjøper via dem. '
. 'Det påvirker ikke vurderingskriteriene våre.'
. '</p>';
}
add_shortcode('affiliate_disclosure', 'wpp_affiliate_disclosure_shortcode');Plasser shortcoden (eller den tilsvarende blokken) etter ingressen. Ikke gjem den i footer alene. Ikke lim den inn i seo.title. Ikke lag egne landingssider som bare gjentar disclaimer-tekst for å «fange» merker.
Hvis du lokaliserer for Norge: hold språket konkret og kort. Lange disclaimers midt i H2-hierarkiet skader lesbarhet og gir inntrykk av tynt innhold.
Native omdirigeringer fremfor tunge plugins
Mange installerer ThirstyAffiliates, Pretty Links eller lignende for å få pene /go/-URL-er. Behovet er ekte. Kostnaden er ofte global CSS/JS, ekstra database-tabeller og admin-skjermer du ikke bruker.
To lettere alternativer:
1. Webserver-omdirigering for et stabilt, lite sett av utganger (hosting, VPN, et håndfull faste partnere).
2. Lett CPT med meta-felt for destinasjon, uten frontend-assets:
register_post_type('affiliate_links', [
'public' => true,
'publicly_queryable' => true,
'has_archive' => false,
'rewrite' => ['slug' => 'go'],
'show_in_rest' => true,
'supports' => ['title'],
]);Kombiner med template_redirect-hooken over. Null bloat på forsiden.
Når plugin fortsatt er fornuftig: store redaksjoner med mange forfattere, behov for klikkstatistikk i admin, og livssyklus for tusenvis av lenker. Da: velg et plugin som kan deaktivere frontend-assets, og verifiser med Query Monitor at scripts ikke lastes sitewide.
Sporing uten å ødelegge URL-ene
Logg klikk server-side i omdirigerings-handleren (post meta-teller, egen tabell, eller event til analytics API) i stedet for å legge UTM på hver intern lenke til /go/. Behold rene stier i HTML; legg parametre på destinasjonen hvis partneren krever det.
Unngå dobbelt-telling: hvis både plugin og GTM fyrer på samme klikk, blir dashboardet ubrukelig. Én kilde til sannhet per utgang.
Oppsummering
- Crawl/indeks: indekser innhold, ikke utgangs-HTML. Hold
/go/utenfor sitemap. - rel: bruk
sponsored(gjerne mednoopener noreferrer) på betalte lenker. - Cloaking: samme destinasjon for brukere og crawlers; ingen UA-triks.
- Omdirigering: HTTP via server eller
wp_redirect, ikke JS-hopp som primær mekanikk. - CWV: begrens widgets og global plugin-CSS på deal-sider.
- Canonical/parametre: rene URL-er, konsistent canonical, døde slugger som 404/410.
- Avsløring: synlig én gang tidlig, uten stuffing i titler og overskrifter.
En slank stack med server-omdirigeringer eller en lett CPT holder affiliate-sidene raske og forutsigbare for både brukere og Googlebot. Skal lenkehåndtering og avsløringer bygges inn i temaet ditt, se teknisk WordPress-utvikling.







