Welche URL-Strukturen sind mit MultilingualPress möglich?

Du befindest dich in der Dokumentation für MultilingualPress 2. Falls du die neuere Version 3 benutzt, wechsle bitte zu MultilingualPress 3.

Wenn du eine mehrsprachige Webseite einrichtest, solltest du dir von Anfang an Gedanken über URL Strukturen machen, da dies ein wichtiger Faktor für den Erfolg deiner mehrsprachigen Internetpräsenz ist.

Beispiele für URL Strukturen

Theoretisch sind alle URL Strukturen, die mit WordPress Multisite realisiert werden können, auch mit MultilingualPress umsetzbar. Wir unterscheiden zwischen Umsetzung über ccTLDs, Unterverzeichnisse und Subdomains.

  • ccTLDs – hierbei handelt es sich um länderspezifische Top Level Domains. In diesem Fall würden wir die deutsche Webseite für MultilingualPress auf multilingualpress.de und die französische auf multilingualpress.fr einrichten.
  • Unterverzeichnisse – meist zusammen mit generischen TLDs (.com, .org, .edu etc.). Die URL Struktur für die mehrsprachige MultilingualPress Webseite wäre beispielsweise multilingualpress.org/de für die deutsche Version und multilingualpress.org/fr für die französische.
  • Subdomains – nicht ganz so günstig aus SEO Sicht wie die anderen beiden Varianten. Hier hätten wir beispielsweise de.multiligualpress.org und fr.multilingualpress.org.

Unterverzeichnisse je Sprache richtig übersetzen

Bei der Verwendung von Unterverzeichnissen ist darauf zu achten, dass die URLs für die einzelnen Sprachen übersetzt werden müssen – besser für die Lesbarkeit und auch für SEO.

Beim Ändern der Sprache eines Custom Post Types im Frontend, kann es sein, dass die URL nicht richtig umgesetzt wird. In diesem Fall nutze den Filter mlp_linked_element_link. Hier ein Beispiel, welches wir auf multilingualpress.de und multilingualpress.org implementiert haben, und zwar für die Übersetzung des Dokumentations-Slugs. Ähnlich funktioniert dies auch für WooCommerce Produkte.

Unsere deutschen Dokumentationen für MultilingualPress liegen unter multilingualpress.de/doku/…. Die englischen unter multilingualpress.org/docs/…. Die Doku-Kategorien liegen unter multilingualpress.de/doku-kategorie/…. bzw.  multilingualpress.org/docs-category/…. Ohne den Fix über den Filter mlp_linked_element_link, verwendet Multilingualpress beim Wechseln auf die deutsche Doku den englischen Doku-Slug, also beispielsweise multilingualpress.de/docs/.

Was wir genau gemacht haben:

  • untenstehende Funktion filter_mlp_linked_cpt_archive_link implementiert
  • den Filter mlp_linked_element_link verwendet, um beim Wechseln der Sprache unsere Funktion aufzurufen
  • alles zur functions.php des Themes hinzugefügt

Das Array $fragments musst du entsprechend anpassen. In dem Array stehen die Slugs für die jeweilige Sprache, die Zahl ist dabei die ID deiner Seite in der Multisite. Ebenso musst du den Post Type 'faq' und 'faq-category' mit deinem eigenen ersetzen.

function filter_mlp_linked_cpt_archive_link(
      $url,
      $target_site_id,
      $target_content_id,
      Mlp_Translation_Interface $translation
) {
     if ( ! is_post_type_archive() && ! is_archive() && ! is_singular( 'faq' ) ) {
	return $url;
     }

     if ( ! is_a( $translation, 'Mlp_Translation_Interface' ) ) {
	return $url;
     }

     $source_site_id = $translation->get_source_site_id();
     if ( ! $source_site_id ) {
	return $url;
     }

     if( is_post_type_archive() || is_singular( 'faq' ) ) {
        $fragments = array(
	   // MultilingualPress EN
	   12 => array(
              '/docs/',
	   ),
	   // MultilingualPress DE
	   16 => array(
	      '/doku/',
	   ),
      );
     }
     elseif ( is_tax( 'faq-category' ) ) {
        $fragments = array(
           // MultilingualPress EN
           12 => array(
	      '/docs-category/',
           ),
           // MultilingualPress DE
           16 => array(
            '/doku-kategorie/',
         ),
       );
     }

     if ( empty( $fragments[ $source_site_id ] ) ) {
        return $url;
     }

     if ( empty( $fragments[ $target_site_id ] ) ) {
        return $url;
     }

     return str_replace(
        $fragments[ $source_site_id ],
	$fragments[ $target_site_id ],
	$url
      );
}

add_filter( 'mlp_linked_element_link', 'filter_mlp_linked_cpt_archive_link', 10, 4 );

Weitere Informationen zu URL Strukturen mit MultilingualPress und ein Beispiel für WooCommerce findest du auch unter:

Mehr zu URL Strukturen und wann du dich für welche entscheiden solltest, erfährst du bei Yoast im Multilingual SEO Kurs.