Yoast WordPress SEO: Sitemap voor elke taal

De WordPress SEO plugin van Yoast is zeer populair (actief op meer dan 1 miljoen websites). Deze plugin kan ook XML Sitemaps aan je website toevoegen. Maar als je een meertalige website hebt, is niet erg duidelijk hoe je voor elke taal apart sitemaps kunt maken. Met WPML is dat alleen mogelijk als je verschillende subdomeinen hebt (bijv. nl.mywebsite.com en en.mywebsite.com) en in de taal-instellingen van WPML ‘een apart domein voor elke taal’ aanvinkt.

Maar wat als je geen subdomeinen hebt, maar voor elke taal een aparte submap (bijv. mijnwebsite.com/nl/ en mijnwebsite.com/en/)?

De oplossing is niet zo moeilijk. Voeg de volgende code toe aan het bestand functions.php in je themafolder:


if (isset($sitepress)) add_filter('wpseo_posts_join', 'sitemap_per_language', 10, 2);
function sitemap_per_language($join, $type) {
    global $wpdb, $sitepress;
    $lang = $sitepress->get_current_language();
    return " JOIN " . $wpdb->prefix . "icl_translations ON element_id = ID AND element_type = 'post_$type' AND language_code = '$lang'";
}

De XML sitemap voor je standaardtaal is nog steeds te vinden via de link mijnwebsite.com/sitemap_index.xml. De andere talen hebben geen ‘index.xml’, maar aparte sitemaps, zoals ‘mijnwebsite.com/en/post-sitemap.xml‘ en ‘mywebsite.com/en/page-sitemap.xml‘ (en mogelijk nog meerdere, afhankelijk van hoeveel verschillende post types je hebt, bijvoorbeeld producten).

Als je nu je sitemaps wil toevoegen bij Google Webmaster Tools kun je voor de standaardtaal gewoon één link gebruiken: ‘sitemap_index.xml’, maar voor je andere talen moet je meerdere XML sitemaps toevoegen, zoals hierboven beschreven.

Bovenstaande stappen zijn noodzakelijk als je een algemeen hoofddomein (.com, .org) hebt en een deel van je site op een bepaald land wilt richten (bijv. Nederland). Dit heet Geografische target.