{"id":357,"date":"2023-02-07T17:32:15","date_gmt":"2023-02-07T17:32:15","guid":{"rendered":"https:\/\/msls.co\/?page_id=357"},"modified":"2026-08-23T11:48:27","modified_gmt":"2026-08-23T11:48:27","slug":"developer-docs","status":"publish","type":"page","link":"https:\/\/msls.co\/de\/developer-docs\/","title":{"rendered":"Entwickler Dokumentation"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Die meisten Anwender werden das Widget oder den Block nutzen, den der <strong>Multisite Language Switcher<\/strong> bereitstellt. Aber eine dynamische Seitenleiste ist nicht immer der beste Ort f\u00fcr die Ausgabe des Plugins. Dieser Bereich richtet sich an alle, die den Sprachumschalter in eigene Templates, Bl\u00f6cke, Plugins oder Add-ons einbauen wollen.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Eine Bitte vorweg: Sichern Sie immer Ihre Dateien und Ihre Datenbank, bevor Sie an Ihrer Website arbeiten. Sicher ist sicher.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie Erkl\u00e4rungen zu den Einstellungen und der t\u00e4glichen Arbeit mit dem Plugin suchen, dann besuchen Sie bitte die <a href=\"https:\/\/msls.co\/de\/user-docs\/\">Einf\u00fchrung f\u00fcr Anwender<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stand dieser Dokumentation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Dokumentation beschreibt <strong>Version 3.0<\/strong> des Plugins. Version 3.0 hat die interne Struktur des Codes deutlich umgebaut und die \u00f6ffentlichen Funktionen umbenannt. Wenn Sie von 2.x kommen, lesen Sie bitte den Abschnitt \u201eMigration von 2.x nach 3.0&#8243; weiter unten. Ihr bestehender Code l\u00e4uft weiter, aber nicht mehr ohne Hinweismeldungen.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Angabe<\/th><th>Wert<\/th><\/tr><\/thead><tbody><tr><td>Aktuelle Version<\/td><td>3.0.1<\/td><\/tr><tr><td>Mindestanforderung PHP<\/td><td>7.4<\/td><\/tr><tr><td>Voraussetzung<\/td><td>WordPress Multisite<\/td><\/tr><tr><td>Quellcode<\/td><td><a href=\"https:\/\/github.com\/lloc\/Multisite-Language-Switcher\">github.com\/lloc\/Multisite-Language-Switcher<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die englische Referenz im Repository unter <a href=\"https:\/\/github.com\/lloc\/Multisite-Language-Switcher\/tree\/master\/docs\"><code>docs\/<\/code><\/a> wird zusammen mit dem Code gepflegt und ist bei Abweichungen die ma\u00dfgebliche Quelle. Diese Seiten sind die deutsche Fassung davon.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Drei Wege zur Ausgabe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr die Ausgabe des Sprachumschalters gibt es drei Wege, die alle denselben Code verwenden und sich nur im Aufrufkontext unterscheiden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Im Editor:<\/strong> Der Block \u201eMultisite Language Switcher&#8220; beziehungsweise das klassische Widget. Nichts zu programmieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In Inhalten:<\/strong> Der Shortcode <code>\\[sc_msls\\]<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Im Template:<\/strong> Die Funktion <code>msls_the_switcher()<\/code> gibt den Umschalter direkt aus, <code>msls_get_switcher()<\/code> liefert ihn als String zur\u00fcck.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if ( function_exists( 'msls_the_switcher' ) ) {\n\tmsls_the_switcher();\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der <code>function_exists()<\/code>-Test ist keine F\u00f6rmlichkeit: Ohne ihn zerlegt ein deaktiviertes Plugin Ihr Template. Alle Funktionen, die das Plugin \u00f6ffentlich anbietet, finden Sie auf der Seite <a href=\"https:\/\/msls.co\/de\/developer-docs\/api-funktionen\/\">API-Funktionen<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Worauf sich Add-ons verlassen k\u00f6nnen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ab dem Moment, in dem WordPress die Datei <code>MultisiteLanguageSwitcher.php<\/code> einbindet, also <strong>noch vor <code>plugins_loaded<\/code><\/strong>, steht Folgendes bereit, unabh\u00e4ngig davon, in welcher Reihenfolge WordPress die Plugins l\u00e4dt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>die <code>msls_*()<\/code>-Funktionen aus <code>includes\/api.php<\/code> und die \u00fcberholten Namen aus <code>includes\/deprecated.php<\/code><\/li>\n\n\n\n<li>jede Klasse unter <code>lloc\\Msls\\<\/code> \u00fcber den PSR-4-Autoloader von Composer<\/li>\n\n\n\n<li>jeder flache Klassenname aus der Zeit vor 3.0, etwa <code>lloc\\Msls\\MslsOptions<\/code> oder <code>lloc\\Msls\\MslsOutput<\/code>, als <code>class_alias()<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist eine bewusste Zusage an Add-ons: Ein <code>class_exists( 'lloc\\Msls\\MslsOptions' )<\/code> zum fr\u00fchen Zeitpunkt liefert <code>true<\/code>. In 3.0.0 war dieser Test zeitweise gebrochen, weil Aliase und Funktionen erst auf <code>plugins_loaded<\/code> geladen wurden. Add-ons wie MslsMenu haben sich daraufhin still selbst deaktiviert. Der Fehler ist behoben und der Ladezeitpunkt ist jetzt Teil des Vertrags.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die <strong>Hooks<\/strong> dagegen greifen erst ab <code>plugins_loaded<\/code> und sp\u00e4ter. Registrieren Sie Ihre Callbacks also wie gewohnt aus <code>plugins_loaded<\/code>, <code>init<\/code> oder einem noch sp\u00e4teren Zeitpunkt heraus.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Paketstruktur seit 3.0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vor 3.0 lagen alle Klassen flach im Namespace <code>lloc\\Msls\\<\/code> und trugen das Pr\u00e4fix <code>Msls<\/code> im Namen. Seit 3.0 sind sie nach Zust\u00e4ndigkeit in Unter-Namespaces sortiert:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Namespace<\/th><th>Inhalt<\/th><\/tr><\/thead><tbody><tr><td><code>lloc\\Msls\\Admin\\<\/code><\/td><td>Einstellungsseite, Metaboxen, Spalten, Filter, \u00dcbersetzungs-Auswahl<\/td><\/tr><tr><td><code>lloc\\Msls\\Blog\\<\/code><\/td><td><code>Blog<\/code> und <code>Collection<\/code>: die Blogs des Netzwerks und ihre Sprachen<\/td><\/tr><tr><td><code>lloc\\Msls\\ContentImport\\<\/code><\/td><td>Der Content-Importer samt Importern, Logger und Relationen<\/td><\/tr><tr><td><code>lloc\\Msls\\ContentTypes\\<\/code><\/td><td>Welche Post Types und Taxonomien als \u00fcbersetzbar gelten<\/td><\/tr><tr><td><code>lloc\\Msls\\Frontend\\<\/code><\/td><td>Ausgabe, Shortcode, Block, Widget, Content-Filter, <code>hreflang<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\Link\\<\/code><\/td><td>Die vier Darstellungsvarianten eines Sprachlinks<\/td><\/tr><tr><td><code>lloc\\Msls\\Options\\<\/code><\/td><td>Einstellungen sowie die \u00dcbersetzungsdaten von Posts, Terms und Archiven<\/td><\/tr><tr><td><code>lloc\\Msls\\Registry\\<\/code><\/td><td>Die Singleton- und Registry-Infrastruktur<\/td><\/tr><tr><td><code>lloc\\Msls\\RestApi\\<\/code><\/td><td>Der REST-Endpunkt hinter \u201eQuick Create&#8220;<\/td><\/tr><tr><td><code>lloc\\Msls\\Compat\\<\/code><\/td><td>Die Aliase auf die alten Klassennamen<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Neu geschriebener Code sollte die Namespace-Namen verwenden. Die Aliase existieren f\u00fcr bestehenden Fremdcode, nicht als gleichwertige Alternative.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zur Orientierung im Code liegen im Repository ein <a href=\"https:\/\/github.com\/lloc\/Multisite-Language-Switcher\/tree\/master\/docs\/diagrams\">Klassendiagramm und ein Paketdiagramm<\/a>, die aus dem Quellcode generiert werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Neu in 3.0: Quick Create<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das sichtbarste neue Feature von 3.0 ist <strong>Quick Create<\/strong>: Eine \u00dcbersetzung l\u00e4sst sich direkt aus der Metabox im Editor anlegen, und \u00fcber den Men\u00fcpunkt \u201eAdd from Translation&#8220; auch f\u00fcr einzelne oder mehrere Beitr\u00e4ge auf einmal. Darunter liegt ein REST-Endpunkt, der sich \u00fcber eine ganze Reihe von Hooks steuern l\u00e4sst, von der Berechtigungspr\u00fcfung (<code>msls_quick_create_capability<\/code>) \u00fcber die Daten des neuen Beitrags (<code>msls_quick_create_post_data<\/code>) bis zur Antwort des Endpunkts (<code>msls_quick_create_response<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Details stehen in der <a href=\"https:\/\/msls.co\/de\/developer-docs\/hook-reference\/\">Hook-Referenz<\/a>, ein Beispiel in den <a href=\"https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/\">Snippets<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migration von 2.x nach 3.0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Zwei Dinge haben sich ge\u00e4ndert, die Ihren bestehenden Code betreffen. Beide sind r\u00fcckw\u00e4rtskompatibel, aber nur die Klassennamen sind es ger\u00e4uschlos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die Funktionsnamen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Seit 2.10.1 tragen alle \u00f6ffentlichen Funktionen ein <code>msls_<\/code>-Pr\u00e4fix, damit sie den WordPress Coding Standards entsprechen. Die alten Namen funktionieren weiter, geben aber bei jedem Aufruf eine <code>_deprecated_function()<\/code>-Meldung aus. Bei aktivem <code>WP_DEBUG<\/code> landet die im Log, und irgendwann f\u00e4llt sie weg.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Alt (\u00fcberholt)<\/th><th>Neu<\/th><\/tr><\/thead><tbody><tr><td><code>get_the_msls( $attr )<\/code><\/td><td><code>msls_get_switcher( $attr = array() )<\/code><\/td><\/tr><tr><td><code>the_msls( $arr )<\/code><\/td><td><code>msls_the_switcher( $arr = array() )<\/code><\/td><\/tr><tr><td><code>get_msls_flag_url( $locale )<\/code><\/td><td><code>msls_get_flag_url( $locale )<\/code><\/td><\/tr><tr><td><code>get_msls_blog_description( $locale, $preset )<\/code><\/td><td><code>msls_get_blog_description( $locale, $preset )<\/code><\/td><\/tr><tr><td><code>get_msls_permalink( $locale, $preset )<\/code><\/td><td><code>msls_get_permalink( $locale, $preset )<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nebenbei: Bei <code>msls_get_switcher()<\/code> ist das Argument seit 3.0 optional. <code>get_the_msls()<\/code> verlangte es zwingend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Suchen-und-Ersetzen \u00fcber Ihr Theme und Ihre Plugins gen\u00fcgt in der Regel. Pr\u00fcfen Sie danach das Debug-Log auf verbliebene Meldungen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die Klassennamen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie Klassen des Plugins direkt verwenden, etwa <code>MslsBlogCollection::instance()<\/code> in einem \u00e4lteren Snippet, dann l\u00e4uft dieser Code \u00fcber die Aliase <code>lloc\\Msls\\Compat\\Aliases<\/code> unver\u00e4ndert weiter, ohne Meldung. Die Umstellung ist trotzdem sinnvoll, weil neue Klassen nur noch unter den neuen Namen dokumentiert werden.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Alt<\/th><th>Neu<\/th><\/tr><\/thead><tbody><tr><td><code>lloc\\Msls\\MslsBlogCollection<\/code><\/td><td><code>lloc\\Msls\\Blog\\Collection<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsBlog<\/code><\/td><td><code>lloc\\Msls\\Blog\\Blog<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsOptions<\/code><\/td><td><code>lloc\\Msls\\Options\\Options<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsOptionsPost<\/code><\/td><td><code>lloc\\Msls\\Options\\Post\\Post<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsOptionsTax<\/code><\/td><td><code>lloc\\Msls\\Options\\Tax\\Tax<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsOptionsQuery<\/code><\/td><td><code>lloc\\Msls\\Options\\Query\\Query<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsOutput<\/code><\/td><td><code>lloc\\Msls\\Frontend\\Output<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsLink<\/code><\/td><td><code>lloc\\Msls\\Link\\Link<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsLinkTextOnly<\/code><\/td><td><code>lloc\\Msls\\Link\\TextOnly<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsLinkImageOnly<\/code><\/td><td><code>lloc\\Msls\\Link\\ImageOnly<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsLinkTextImage<\/code><\/td><td><code>lloc\\Msls\\Link\\TextImage<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsAdmin<\/code><\/td><td><code>lloc\\Msls\\Admin\\Admin<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsPostType<\/code><\/td><td><code>lloc\\Msls\\ContentTypes\\PostType<\/code><\/td><\/tr><tr><td><code>lloc\\Msls\\MslsTaxonomy<\/code><\/td><td><code>lloc\\Msls\\ContentTypes\\Taxonomy<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die vollst\u00e4ndige Zuordnung steht als Konstante <code>MAP<\/code> in <a href=\"https:\/\/github.com\/lloc\/Multisite-Language-Switcher\/blob\/master\/includes\/Compat\/Aliases.php\"><code>includes\/Compat\/Aliases.php<\/code><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Am besten fahren Sie ohnehin, wenn Sie die Klassen gar nicht direkt anfassen: F\u00fcr fast alles gibt es eine <code>msls_*()<\/code>-Funktion, die den Zugriff kapselt und stabil bleibt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie es weitergeht<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/msls.co\/de\/developer-docs\/api-funktionen\/\">API-Funktionen<\/a>: die \u00f6ffentlichen Funktionen des Plugins, mit Signatur und Zweck<\/li>\n\n\n\n<li><a href=\"https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/\">Snippets &amp; Beispiele<\/a>: kurze Rezepte f\u00fcr Template, Men\u00fc, <code>hreflang<\/code> und Quick Create<\/li>\n\n\n\n<li><a href=\"https:\/\/msls.co\/de\/developer-docs\/hook-reference\/\">Hook-Referenz<\/a>: alle Actions und Filter, nach Subsystem gruppiert<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Fragen, Fehler und Vorschl\u00e4ge geh\u00f6ren ins <a href=\"https:\/\/github.com\/lloc\/Multisite-Language-Switcher\/issues\">Issue-Tracking auf GitHub<\/a> oder ins <a href=\"https:\/\/wordpress.org\/support\/plugin\/multisite-language-switcher\/\">Support-Forum auf WordPress.org<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die meisten Anwender werden das Widget oder den Block nutzen, den der Multisite Language Switcher bereitstellt. Aber eine dynamische Seitenleiste ist nicht immer der beste Ort f\u00fcr die Ausgabe des Plugins. Dieser Bereich richtet sich an alle, die den Sprachumschalter in eigene Templates, Bl\u00f6cke, Plugins oder Add-ons einbauen wollen. Eine Bitte vorweg: Sichern Sie immer &hellip; <a href=\"https:\/\/msls.co\/de\/developer-docs\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eEntwickler Dokumentation\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-357","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Entwickler Dokumentation - Multisite Language Switcher<\/title>\n<meta name=\"description\" content=\"Viele nutzen das bereitgestellte Widget, aber die Seitenleisten sind oft nicht der beste Ort f\u00fcr die Ausgabe des Multisite Language Switcher.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/msls.co\/de\/developer-docs\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Entwickler Dokumentation - Multisite Language Switcher\" \/>\n<meta property=\"og:description\" content=\"Viele nutzen das bereitgestellte Widget, aber die Seitenleisten sind oft nicht der beste Ort f\u00fcr die Ausgabe des Multisite Language Switcher.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/msls.co\/de\/developer-docs\/\" \/>\n<meta property=\"og:site_name\" content=\"Multisite Language Switcher\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/realloc\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-23T11:48:27+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@realloc\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/\",\"url\":\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/\",\"name\":\"Entwickler Dokumentation - Multisite Language Switcher\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/#website\"},\"datePublished\":\"2023-02-07T17:32:15+00:00\",\"dateModified\":\"2026-08-23T11:48:27+00:00\",\"description\":\"Viele nutzen das bereitgestellte Widget, aber die Seitenleisten sind oft nicht der beste Ort f\u00fcr die Ausgabe des Multisite Language Switcher.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/msls.co\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Entwickler Dokumentation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/msls.co\\\/de\\\/\",\"name\":\"Multisite Language Switcher\",\"description\":\"WordPress Multilingual \u2013 Simple, powerful and easy to use\",\"publisher\":{\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/msls.co\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/#organization\",\"name\":\"Multisite Language Switcher\",\"url\":\"https:\\\/\\\/msls.co\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/msls.co\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/sites\\\/13\\\/2023\\\/03\\\/cropped-icon.png\",\"contentUrl\":\"https:\\\/\\\/msls.co\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/sites\\\/13\\\/2023\\\/03\\\/cropped-icon.png\",\"width\":512,\"height\":512,\"caption\":\"Multisite Language Switcher\"},\"image\":{\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/realloc\",\"https:\\\/\\\/x.com\\\/realloc\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Entwickler Dokumentation - Multisite Language Switcher","description":"Viele nutzen das bereitgestellte Widget, aber die Seitenleisten sind oft nicht der beste Ort f\u00fcr die Ausgabe des Multisite Language Switcher.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/msls.co\/de\/developer-docs\/","og_locale":"de_DE","og_type":"article","og_title":"Entwickler Dokumentation - Multisite Language Switcher","og_description":"Viele nutzen das bereitgestellte Widget, aber die Seitenleisten sind oft nicht der beste Ort f\u00fcr die Ausgabe des Multisite Language Switcher.","og_url":"https:\/\/msls.co\/de\/developer-docs\/","og_site_name":"Multisite Language Switcher","article_publisher":"https:\/\/www.facebook.com\/realloc","article_modified_time":"2026-08-23T11:48:27+00:00","twitter_card":"summary_large_image","twitter_site":"@realloc","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/msls.co\/de\/developer-docs\/","url":"https:\/\/msls.co\/de\/developer-docs\/","name":"Entwickler Dokumentation - Multisite Language Switcher","isPartOf":{"@id":"https:\/\/msls.co\/de\/#website"},"datePublished":"2023-02-07T17:32:15+00:00","dateModified":"2026-08-23T11:48:27+00:00","description":"Viele nutzen das bereitgestellte Widget, aber die Seitenleisten sind oft nicht der beste Ort f\u00fcr die Ausgabe des Multisite Language Switcher.","breadcrumb":{"@id":"https:\/\/msls.co\/de\/developer-docs\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/msls.co\/de\/developer-docs\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/msls.co\/de\/developer-docs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/msls.co\/de\/"},{"@type":"ListItem","position":2,"name":"Entwickler Dokumentation"}]},{"@type":"WebSite","@id":"https:\/\/msls.co\/de\/#website","url":"https:\/\/msls.co\/de\/","name":"Multisite Language Switcher","description":"WordPress Multilingual \u2013 Simple, powerful and easy to use","publisher":{"@id":"https:\/\/msls.co\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/msls.co\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/msls.co\/de\/#organization","name":"Multisite Language Switcher","url":"https:\/\/msls.co\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/msls.co\/de\/#\/schema\/logo\/image\/","url":"https:\/\/msls.co\/de\/wp-content\/uploads\/sites\/12\/sites\/13\/2023\/03\/cropped-icon.png","contentUrl":"https:\/\/msls.co\/de\/wp-content\/uploads\/sites\/12\/sites\/13\/2023\/03\/cropped-icon.png","width":512,"height":512,"caption":"Multisite Language Switcher"},"image":{"@id":"https:\/\/msls.co\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/realloc","https:\/\/x.com\/realloc"]}]}},"_links":{"self":[{"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/pages\/357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/comments?post=357"}],"version-history":[{"count":4,"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/pages\/357\/revisions"}],"predecessor-version":[{"id":778,"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/pages\/357\/revisions\/778"}],"wp:attachment":[{"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/media?parent=357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}