Verfügbare Websites in Multisite Language Switcher einschränken
Veröffentlicht: – Kommentar hinterlassen
Standardmäßig zeigt Multisite Language Switcher alle konfigurierten Websites einer Multisite als potenzielle Übersetzung an. Dies ist in manchen Umgebungen nicht sinnvoll. Hier bei Epiphyt beispielsweise haben wir die Haupt-Website in Deutsch und Englisch, ebenso wie die Website von Impressum Plus. Das heißt, wir haben vier Websites insgesamt, wobei jeweils zwei auf Deutsch und zwei auf Englisch sind.
Multisite Language Switcher verlinkt keine Websites miteinander, sondern nimmt an, dass jede konfigurierte Website in einer Multisite eine andere Sprache für denselben Inhalt verwendet. In unserem Fall wäre derselbe Inhalt jeweils zweimal in Deutsch und zweimal in Englisch vorhanden. Das wäre nicht nur dumm, sondern führt auch zu Problemen in Multisite Language Switcher, denn damit ist es beispielsweise nicht möglich, zwei Seiten miteinander zu verbinden, da immer zwei der vier Websites dieselbe Bezeichnung besitzen, die die Sprachbezeichnung darstellt.
Um dies zu umgehen, haben wir nach einer Möglichkeit gesucht, die konfigurierten Websites in Multisite Language Switcher je nach eingegebener Domain zu beschränken, sodass die Websites von Epiphyt nur deren deutsche und Englische Version kennen, ebenso wie die von Impressum Plus nur deren.
Glücklicherweise besitzt Multisite Language Switcher hierfür den Filter msls_blog_collection_construct
, um dies zu erreichen:
/**
* Filter the blog collection of Multisite Language Switcher.
*
* @param array $collection The current collection
* @return array The filtered collection
*/
function my_filter_msls_collection( array $collection ): array {
foreach ( $collection as $blog_id => $blog ) {
if (
$_SERVER['HTTP_HOST'] === 'epiph.yt' && strpos( $blog->siteurl, 'epiph.yt' ) === false
|| $_SERVER['HTTP_HOST'] === 'impressum.plus' && strpos( $blog->siteurl, 'impressum.plus' ) === false
) {
unset( $collection[ $blog_id ] );
}
}
return $collection;
}
add_filter( 'msls_blog_collection_construct', 'my_filter_msls_collection' );
Code-Sprache: PHP (php)
Der Filter erlaubt dir, die Blog-Sammlung zu verändern, also alle Websites in der Multisite, die in Multisite Language Switcher konfiguriert sind. Wenn die aktuelle URL den Host epiph.yt
besitzt und der aktuelle Blog in der Sammlung nicht, wird er aus der Sammlung entfernt. Dasselbe gilt ebenso für impressum.plus
.
Über diesen Weg kann ich dieselbe Multisite für zwei unterschiedliche Websites benutzen, von denen beide jeweils in Deutsch und Englisch verfügbar sind.