Als uw WordPress-site inhoud in meerdere talen aanbiedt of zich richt op verschillende regio's, is het implementeren van hreflang-tags essentieel voor zoekmachineoptimalisatie. Zonder hen kunnen Google en andere zoekmachines de verkeerde taalversie tonen in hun resultaten of uw vertaalde pagina's behandelen als duplicate content, wat uw rankings verwatert over alle taalversies. Hreflang-tags vertellen zoekmachines precies welke taal en regionale variant elke pagina vertegenwoordigt, zodat gebruikers altijd op de meest relevante versie terechtkomen.
Wat hreflang-tags zijn en hoe zoekmachines ze gebruiken
Hreflang is een HTML-attribuut dat de taal (en optioneel het geografische doel) van een pagina specificeert. Het verschijnt als een <link>-element in het <head>-gedeelte van uw pagina, of als een vermelding in uw XML-sitemap. Zo ziet een typische set hreflang-tags eruit voor een pagina die beschikbaar is in het Engels en het Duits:
<link rel="alternate" hreflang="en" href="https://example.com/en/about/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/ueber-uns/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about/" />Wanneer Googlebot een pagina scant en deze tags vindt, begrijpt het dat beide URL's dezelfde inhoud in verschillende talen vertegenwoordigen. Het serveert vervolgens de juiste versie op basis van de taalvoorkeuren en locatie van de zoeker. De x-default-tag fungeert als allesomvattende fallback voor gebruikers wier taal of regio niet overeenkomt met een van de gespecificeerde hreflang-waarden.
Hreflang gebruikt ISO 639-1-taalcodes (bijv. en, de, fr) en optioneel ISO 3166-1 Alpha 2-landcodes (bijv. en-US, de-AT, pt-BR). De taalcode alleen richt zich op alle gebruikers van die taal, ongeacht locatie, terwijl het toevoegen van een landcode de targeting beperkt tot een specifieke regio.
Wanneer u regionale targeting versus alleen taal nodig hebt
De keuze tussen alleen taalcodes (zoals de) en regiospecifieke codes (zoals de-DE, de-AT, de-CH) hangt af van uw contentstrategie:
- Alleen taal (
de): Gebruik dit wanneer uw Duitstalige content geschikt is voor alle Duitstalige gebruikers ongeacht hun land. Dit is de juiste keuze voor de meeste blogs, informatiesites en SaaS-producten. - Regiospecifiek (
de-DE,de-AT): Gebruik dit wanneer u afzonderlijke content hebt die is toegesneden op specifieke landen. Een e-commercewinkel met andere productbeschikbaarheid, prijzen of juridische informatie voor Duitsland versus Oostenrijk versus Zwitserland heeft bijvoorbeeld regiospecifieke tags nodig.
Een veelgemaakte fout is het gebruik van regiospecifieke codes wanneer alleen-taalcodes zouden volstaan. Als uw Duitse content identiek is voor alle Duitstaligen, is de eenvoudiger en voorkomt het de noodzaak om aparte pagina's per regio te maken.
Hreflang instellen met WPML
WPML (WordPress Multilingual Plugin) is de meest gebruikte premium meertalige plugin en handelt hreflang-tags automatisch af:
- Schaf WPML Multilingual CMS aan op wpml.org en installeer het.
- Voer de installatiewizard uit. Kies uw standaardtaal en voeg alle talen toe die uw site ondersteunt.
- Selecteer uw URL-structuur. WPML ondersteunt submappen (
/en/,/de/), subdomeinen (en.example.com) of aparte domeinen. Submappen zijn het meest gangbaar en het eenvoudigst te beheren. - Begin met het vertalen van uw inhoud. Klik bij elk bericht of pagina op het "+"-pictogram naast de doeltaal in het WPML-taalveld om een vertaling te maken.
- WPML genereert automatisch hreflang-tags voor elke pagina die vertalingen heeft. Het voegt ook de
x-default-tag toe die naar uw standaardtaalversie verwijst.
Om de uitvoer te verifiëren, bekijkt u de bron van een vertaalde pagina en zoekt u op hreflang. U zou een <link>-tag voor elke taal moeten zien, inclusief die van de huidige pagina (een zelfverwijzende hreflang, die verplicht is).
WPML integreert ook met Yoast SEO en Rank Math. Wanneer beide plugins actief zijn, neemt de SEO-plugin de hreflang-generatie over en voegt een eigen validatielaag toe die veelvoorkomende misconfiguraties kan opvangen.
Hreflang instellen met Polylang
Polylang is een populair gratis alternatief voor WPML. Het genereert automatisch hreflang-tags voor alle gekoppelde vertalingen:
- Installeer en activeer Polylang uit de WordPress-pluginmap.
- Ga naar Talen > Talen en voeg elke taal toe die uw site ondersteunt. Stel de locale, taalcode en het URL-formaat in (submap aanbevolen).
- Wijs een taal toe aan elk bestaand bericht en elke pagina. Polylang voegt een taalkolom toe aan uw berichtenoverzicht, waardoor u eenvoudig ziet welke berichten zijn vertaald.
- Koppel vertalingen aan elkaar. Wanneer u een bericht bewerkt, gebruikt u het vak "Vertalingen" in de zijbalk om het te verbinden met het equivalent in andere talen.
- Polylang voert automatisch hreflang-tags uit in de
<head>voor alle gekoppelde vertalingen.
Een belangrijk verschil met WPML: Polylang voegt de x-default-tag niet automatisch toe in alle configuraties. Om er zeker van te zijn dat deze aanwezig is, gaat u naar Talen > Instellingen > Hreflang en verifieert u dat x-default is ingesteld op uw primaire taal. Als u Polylang Pro (de premiumversie) gebruikt, wordt dit automatisch geregeld.
Hreflang instellen met TranslatePress
TranslatePress hanteert een andere aanpak door u inhoud rechtstreeks in de frontend te laten vertalen:
- Installeer en activeer TranslatePress.
- Ga naar Instellingen > TranslatePress en voeg uw talen toe.
- Klik op "Site vertalen" in de adminwerkbalk om de visuele vertaaleditor te openen.
- Navigeer naar een willekeurige pagina en klik op tekstelementen om ze inline te vertalen.
- TranslatePress regelt automatisch de hreflang-taggeneratie voor alle vertaalde pagina's.
TranslatePress slaat vertalingen op in de database in plaats van afzonderlijke berichten te creëren, wat betekent dat uw contentbeheer eenvoudiger is, maar dat de URL-structuuropties beperkter zijn.
Yoast SEO of Rank Math combineren met meertalige plugins
Zowel Yoast SEO als Rank Math herkennen populaire meertalige plugins en nemen de generatie van hreflang-tags over wanneer beide actief zijn. Deze integratie voegt extra validatie toe:
- Canonical URL-matching: De SEO-plugin verifieert dat de hreflang-href overeenkomt met de canonical URL van elke pagina, wat een veelvoorkomende misconfiguratie voorkomt.
- Noindex-afhandeling: Pagina's gemarkeerd als noindex worden automatisch uitgesloten van hreflang-uitvoer, aangezien zoekmachines deze toch niet zouden moeten indexeren.
- Sitemap-integratie: Hreflang-annotaties worden opgenomen in de XML-sitemap die door de SEO-plugin wordt gegenereerd, wat zoekmachines een tweede bron van hreflang-data biedt.
Als u Yoast SEO met WPML of Polylang gebruikt, controleer dan SEO > Algemeen > Functies en zorg dat de hreflang-functie niet is uitgeschakeld. Rank Math regelt dit automatisch zonder aanvullende configuratie.
Handmatige hreflang-implementatie in WordPress
Voor sites met een aangepaste meertalige opzet (bijv. met aparte WordPress-installaties voor elke taal of een headless-CMS-aanpak) moet u hreflang-tags mogelijk handmatig toevoegen:
function add_hreflang_tags() {
if (is_singular()) {
$post_id = get_the_ID();
// Definieer uw taal-naar-URL-mapping
// Sla vertalingen op als post meta of in een aangepaste tabel
$translations = array(
'en' => get_post_meta($post_id, '_url_en', true),
'de' => get_post_meta($post_id, '_url_de', true),
'fr' => get_post_meta($post_id, '_url_fr', true),
);
// Verwijder lege vermeldingen
$translations = array_filter($translations);
// Voeg de huidige pagina toe (zelfverwijzende hreflang is vereist)
$current_lang = get_locale();
$lang_code = substr($current_lang, 0, 2); // 'en_US' wordt 'en'
$translations[$lang_code] = get_permalink();
// Voer hreflang-tags uit
foreach ($translations as $lang => $url) {
echo '<link rel="alternate" hreflang="' . esc_attr($lang) . '" href="' . esc_url($url) . '" />' . "\n";
}
// x-default (verwijst meestal naar Engels of uw primaire taal)
if (!empty($translations['en'])) {
echo '<link rel="alternate" hreflang="x-default" href="' . esc_url($translations['en']) . '" />' . "\n";
}
} elseif (is_front_page() || is_home()) {
// Behandel de homepage afzonderlijk
$home_translations = array(
'en' => 'https://example.com/en/',
'de' => 'https://example.com/de/',
'fr' => 'https://example.com/fr/',
);
foreach ($home_translations as $lang => $url) {
echo '<link rel="alternate" hreflang="' . esc_attr($lang) . '" href="' . esc_url($url) . '" />' . "\n";
}
echo '<link rel="alternate" hreflang="x-default" href="' . esc_url($home_translations['en']) . '" />' . "\n";
}
}
add_action('wp_head', 'add_hreflang_tags');In een productieopstelling vervangt u de hardgecodeerde URL-arrays door dynamische lookups vanuit uw vertalingsmappingsysteem, of dat nu post meta is, een aangepaste databasetabel of een API-aanroep naar uw vertaalmanagementplatform.
Hreflang toevoegen aan XML-sitemaps
Voor sites met duizenden pagina's kan hreflang aangeven in uw XML-sitemap efficiënter zijn dan tags aan elke HTML-pagina toevoegen. De XML-sitemapaanpak vermindert de paginagrootte en geeft zoekmachines een gecentraliseerde bron van hreflang-data. Hier is het XML-formaat:
<url>
<loc>https://example.com/en/about/</loc>
<xhtml:link rel="alternate" hreflang="en"
href="https://example.com/en/about/" />
<xhtml:link rel="alternate" hreflang="de"
href="https://example.com/de/ueber-uns/" />
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/en/about/" />
</url>Zowel WPML als Polylang voegen automatisch hreflang-annotaties toe aan hun sitemaps. Als u Yoast SEO naast een meertalige plugin gebruikt, neemt Yoast hreflang ook op in zijn sitemap. Voor handmatige implementaties kunt u een plugin als "XML Sitemap Generator for Google" gebruiken en de sitemapuitvoer aanpassen om hreflang-vermeldingen op te nemen.
U kunt zowel HTML-hreflang-tags als XML-sitemap-annotaties tegelijkertijd gebruiken. Google verwerkt beide en verzoent ze. Bij conflicten tussen de twee gebruikt Google zijn eigen heuristieken om de juiste mapping te bepalen.
Cruciale hreflang-regels die u moet volgen
Hreflang is berucht eenvoudig verkeerd te implementeren. Volg deze regels om veelvoorkomende valkuilen te vermijden:
- Bidirectionele (wederzijdse) koppeling is verplicht: Als pagina A (Engels) een hreflang bevat die naar pagina B (Duits) verwijst, moet pagina B ook een hreflang bevatten die terug naar pagina A verwijst. Als de koppeling slechts éénrichtingsverkeer is, negeren zoekmachines deze volledig. Dit is de meest voorkomende hreflang-fout.
- Zelfverwijzende hreflang is vereist: Elke pagina moet een hreflang-tag bevatten die naar zichzelf verwijst. Heeft uw Engelse pagina hreflang-tags voor de Duitse en Franse versies, dan moet hij ook een hreflang-tag voor de Engelse versie hebben die naar zijn eigen URL verwijst.
- Gebruik uitsluitend canonical URL's: De URL in elke hreflang-tag moet exact overeenkomen met de canonical URL van die pagina. Heeft een pagina een
rel="canonical"-tag die naar een andere URL verwijst, gebruik dan de canonical URL in de hreflang-tag, niet de URL van de huidige pagina. - Elke taalvariant heeft de volledige set nodig: Bij 4 taalversies moet elke paginavariant alle 4 hreflang-tags plus x-default bevatten. Onvolledige sets zorgen ervoor dat zoekmachines de volledige hreflang-annotatie voor die paginagroep negeren.
- Pagina's moeten een 200-statuscode retourneren: Neem geen URL's op in hreflang-tags die redirecten (301/302) of fouten retourneren (404/500). Zoekmachines markeren deze als hreflang-fouten en stoppen mogelijk uiteindelijk met het verwerken van uw hreflang-annotaties.
- Neem altijd x-default op: De x-default-tag dient als fallback voor gebruikers wier taal of regio niet overeenkomt met een van uw gespecificeerde varianten. Zonder deze tag zien deze gebruikers uw inhoud mogelijk helemaal niet in de zoekresultaten.
Uw hreflang-implementatie debuggen en valideren
Na het opzetten van hreflang-tags is grondige validatie cruciaal. Zelfs kleine fouten kunnen uw volledige hreflang-opzet onbruikbaar maken:
- InspectWP-analyse: Voer elke taalversie van uw site door InspectWP. Het detecteert alle hreflang-tags en somt elke taalvariant op, waardoor u eenvoudig kunt verifiëren dat alle tags aanwezig zijn en naar de juiste URL's verwijzen.
- Google Search Console: Controleer het rapport Internationale targeting (onder Verouderde tools en rapporten) op hreflang-fouten. Google rapporteert problemen zoals ontbrekende retourkoppelingen, onbekende taalcodes en hreflang-conflicten met canonical-tags.
- Handmatige broncode-inspectie: Bekijk de bron van elke taalversie en verifieer dat de hreflang-tags aanwezig, bidirectioneel en zelfverwijzend zijn. Controleer of de URL's absoluut zijn (niet relatief) en het juiste protocol gebruiken (https, niet http).
- Audit met Ahrefs of Screaming Frog: Gebruik voor grote sites een crawlertool om alle pagina's tegelijk te controleren. Deze tools kunnen ontbrekende hreflang-tags, niet-wederzijdse koppelingen en taalcodemissmatches over uw volledige site identificeren.
Hreflang voor WordPress Multisite-netwerken
Als u een WordPress Multisite beheert waarbij elke subsite een andere taal vertegenwoordigt, vereist hreflang-implementatie cross-site-bewustzijn. WPML ondersteunt Multisite-configuraties en koppelt content over subsites heen. Voor handmatige implementaties moet u de databases van de andere subsites bevragen om het bijbehorende vertaalde bericht te vinden en de hreflang-URL dynamisch te construeren. Met de WordPress-functie switch_to_blog() kunt u binnen hetzelfde netwerk de gegevens van een andere subsite bevragen.
Prestatieoverwegingen voor grote meertalige sites
Op sites met veel talen (10+) kunnen de hreflang-tags aanzienlijke markup aan elke pagina toevoegen. Elke pagina heeft één tag per taal plus x-default nodig, dus een site met 15 talen voegt 16 <link>-elementen toe aan de head van elke pagina. Voor prestatiegevoelige sites zijn de volgende strategieën het overwegen waard:
- Gebruik XML-sitemap-hreflang in plaats van HTML: Het verplaatsen van hreflang-declaraties naar de sitemap verwijdert de markup volledig uit uw pagina's, waardoor de paginagrootte afneemt.
- Cache hreflang-uitvoer: Als u hreflang-tags dynamisch genereert (bijv. uit databasequery's), cache het resultaat dan met WordPress-transients of uw object cache om herhaalde databasehits bij elk paginaladen te vermijden.
- Gebruik HTTP-koptekst voor niet-HTML-content: Voor PDF's en andere niet-HTML-resources kunt u hreflang declareren met HTTP
Link-koptekst in plaats van HTML-tags.