{"id":485,"date":"2023-02-28T20:58:09","date_gmt":"2023-02-28T20:58:09","guid":{"rendered":"http:\/\/msls.co\/?page_id=485"},"modified":"2026-08-23T11:26:09","modified_gmt":"2026-08-23T11:26:09","slug":"snippets-beispiele","status":"publish","type":"page","link":"https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/","title":{"rendered":"Snippets &amp; Beispiele"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Eine Sammlung kurzer Rezepte, die zeigen, wie sich der Multisite Language Switcher in ein Theme oder ein anderes Plugin einf\u00fcgt. Jedes Snippet ist absichtlich minimal gehalten. Behandeln Sie es als Startpunkt: kopieren Sie es in Ihre <code>functions.php<\/code> oder in ein kleines mu-Plugin und passen Sie es an Ihre Men\u00fc-Positionen, Post Types und Locales an.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die verwendeten Funktionen sind auf der Seite <a href=\"https:\/\/msls.co\/de\/developer-docs\/api-funktionen\/\">API-Funktionen<\/a> beschrieben, die Filter in der <a href=\"https:\/\/msls.co\/de\/developer-docs\/hook-reference\/\">Hook-Referenz<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die aktuelle Sprache ermitteln<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In den meisten F\u00e4llen sollten Sie die WordPress-Funktion <code>get_locale()<\/code> verwenden, wenn Sie die Sprache des aktuellen Blogs brauchen. Das Plugin bietet \u00fcber seine Blog-Collection eine nahezu gleichwertige Alternative, die zus\u00e4tzlich auf <code>en_US<\/code> zur\u00fcckf\u00e4llt, wenn der Wert leer ist, und liefert den zweibuchstabigen Code separat.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$blog     = msls_blog_collection()-&gt;get_current_blog();\n$language = $blog-&gt;get_language(); \/\/ en_US\n$alpha2   = $blog-&gt;get_alpha2();   \/\/ en\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Den Umschalter im Template ausgeben<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Einzeiler f\u00fcr Theme-Dateien. Der <code>function_exists()<\/code>-Test sorgt daf\u00fcr, dass das Template auch bei deaktiviertem Plugin durchl\u00e4uft.<\/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\">Wenn Sie das Markup als String brauchen, etwa um es in eine eigene Komponente einzubetten, nehmen Sie <code>msls_get_switcher()<\/code> und \u00fcbergeben optional die Tags:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$markup = msls_get_switcher(\n\tarray(\n\t\t'before_output' =&gt; '&lt;ul class=\"lang\"&gt;',\n\t\t'after_output'  =&gt; '&lt;\/ul&gt;',\n\t\t'before_item'   =&gt; '&lt;li&gt;',\n\t\t'after_item'    =&gt; '&lt;\/li&gt;',\n\t)\n);\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Das Navigationsmen\u00fc erweitern<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Klasse <code>Frontend\\Output<\/code> ist der richtige Einstieg, wenn Sie den Sprachumschalter in ein Navigationsmen\u00fc einh\u00e4ngen wollen. Das folgende Beispiel gibt die Links als reine Flaggen aus und h\u00e4ngt sie nur an das prim\u00e4re Men\u00fc an.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auch hier gilt: Fragen Sie lieber die Funktion <code>msls_output()<\/code> ab, als die Klasse direkt zu referenzieren. So bleibt das Theme bei deaktiviertem Plugin funktionsf\u00e4hig.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function my_custom_menu_item( $items, $args ) {\n\tif ( function_exists( 'msls_output' ) &amp;&amp; 'primary' === $args-&gt;theme_location ) {\n\t\t$arr = msls_output()-&gt;get( 2 );\n\t\tif ( ! empty( $arr ) ) {\n\t\t\t$items .= '&lt;li&gt;' . implode( '&lt;\/li&gt;&lt;li&gt;', $arr ) . '&lt;\/li&gt;';\n\t\t}\n\t}\n\n\treturn $items;\n}\nadd_filter( 'wp_nav_menu_items', 'my_custom_menu_item', 10, 2 );\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Zahl, die an <code>get()<\/code> \u00fcbergeben wird, w\u00e4hlt die Darstellungsvariante des Links:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/* Link: Flaggenbild und Text *\/\n$arr = msls_output()-&gt;get( 0 );\n\n\/* TextOnly: nur der Sprachtext *\/\n$arr = msls_output()-&gt;get( 1 );\n\n\/* ImageOnly: nur das Flaggenbild *\/\n$arr = msls_output()-&gt;get( 2 );\n\n\/* TextImage: Text und Flaggenbild *\/\n$arr = msls_output()-&gt;get( 3 );\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie das nicht selbst schreiben wollen: Genau das macht das Add-on <a href=\"https:\/\/github.com\/lloc\/MslsMenu\">MslsMenu<\/a>, inklusive Einstellungsseite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00dcber die Blogs iterieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie f\u00fcr jeden Blog, den das Plugin verwaltet, etwas tun wollen (alternative Links ausgeben, ein eigenes Men\u00fc bauen, eine Sitemap f\u00fcllen), iterieren Sie direkt \u00fcber die Collection:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function my_print_something() {\n\tforeach ( msls_blog_collection()-&gt;get() as $blog ) {\n\t\tprintf(\n\t\t\t'&lt;link rel=\"alternate\" hreflang=\"%1$s\" href=\"http:\/\/%1$s.example.com\/\" \/&gt;',\n\t\t\tesc_attr( $blog-&gt;get_language() )\n\t\t);\n\t}\n}\nadd_action( 'wp_head', 'my_print_something' );\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Beachten Sie: <code>msls_blog_collection()-&gt;get()<\/code> liefert alle Blogs <strong>au\u00dfer<\/strong> dem aktuellen. Wenn Sie die vollst\u00e4ndige Liste brauchen, verwenden Sie <code>get_objects()<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Auf eine einzelne \u00dcbersetzung verlinken<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>msls_get_permalink()<\/code> ist die richtige Wahl, wenn Sie einen direkten Link auf genau eine Sprache setzen oder Ihr eigenes Umschalter-Markup bauen. Das optionale zweite Argument wird zur\u00fcckgegeben, wenn keine \u00dcbersetzung existiert. Der Aufruf ist damit auch inline sicher:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$de_url = msls_get_permalink( 'de_DE', home_url( '\/' ) );\necho '&lt;a href=\"' . esc_url( $de_url ) . '\"&gt;Deutsche Version&lt;\/a&gt;';\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Den hreflang-Wert anpassen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Filter <code>msls_head_hreflang<\/code> bestimmt den Wert des <code>hreflang<\/code>-Attributs, das im <code>&lt;head&gt;<\/code> ausgegeben wird. Nutzen Sie ihn, wenn Sie aus SEO-Gr\u00fcnden eine regionale Schreibweise erzwingen wollen, etwa <code>en-US<\/code> statt eines blo\u00dfen <code>en<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter( 'msls_head_hreflang', function ( string $language ): string {\n\treturn 'en_US' === $language ? 'en-US' : $language;\n} );\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Post Types ein- und ausschlie\u00dfen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Standardm\u00e4\u00dfig behandelt das Plugin <code>post<\/code>, <code>page<\/code> und alle \u00f6ffentlichen eigenen Post Types als \u00fcbersetzbar. Mit <code>msls_supported_post_types<\/code> nehmen Sie einzelne davon heraus, zum Beispiel einen <code>feedback<\/code>-CPT, der einsprachig bleiben soll:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter( 'msls_supported_post_types', function ( array $types ): array {\n\treturn array_values( array_diff( $types, array( 'feedback' ) ) );\n} );\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der Filter <code>msls_supported_taxonomies<\/code> tut dasselbe f\u00fcr Taxonomien.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Das Markup der Sprachlinks \u00fcberschreiben<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>msls_output_get<\/code> l\u00e4uft f\u00fcr jedes gerenderte Sprachelement, kurz bevor es in das Ausgabe-Array wandert. Der Filter bekommt die Ziel-URL (nicht das fertige Anker-Element), das <code>LinkInterface<\/code>-Objekt und die Information, ob das Element auf den aktuellen Blog zeigt. Der R\u00fcckgabewert muss das vollst\u00e4ndige HTML dieses Elements sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Link-Objekt tr\u00e4gt seine Werte in drei magischen Eigenschaften: <code>txt<\/code> ist die Beschreibung des Blogs, <code>src<\/code> die URL des Flaggen-Icons und <code>alt<\/code> das Locale. Die Umwandlung in ein <code>&lt;img&gt;<\/code> beziehungsweise in Text \u00fcbernimmt <code>__toString()<\/code>, abh\u00e4ngig von der gew\u00e4hlten Variante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Beispiel setzt <code>hreflang<\/code> und <code>aria-current<\/code> und l\u00e4sst das Markup ansonsten schlicht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter( 'msls_output_get', function ( string $url, $link, bool $is_current_blog ): string {\n\t$current_attr = $is_current_blog ? ' aria-current=\"page\"' : '';\n\n\treturn sprintf(\n\t\t'&lt;a href=\"%s\" hreflang=\"%s\"%s&gt;%s&lt;\/a&gt;',\n\t\tesc_url( $url ),\n\t\tesc_attr( str_replace( '_', '-', (string) $link-&gt;alt ) ),\n\t\t$current_attr,\n\t\t(string) $link\n\t);\n}, 10, 3 );\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Solange kein Callback an diesem Filter h\u00e4ngt, erzeugt das Plugin sein eigenes Standard-Anker-Element, inklusive <code>class=\"current_language\"<\/code> und <code>aria-current=\"page\"<\/code> auf der aktiven Sprache.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hinweis auf \u00dcbersetzungen im Beitragstext<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das Plugin kann \u00fcber oder unter dem Beitrag einen Hinweis einblenden, dass der Text auch in anderen Sprachen vorliegt. Mit <code>msls_filter_string<\/code> ersetzen Sie die Formatvorlage daf\u00fcr. Der Filter bekommt zus\u00e4tzlich das Array der Sprachlinks, sodass Ihre eigene Fassung sie weiterverwenden kann:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter( 'msls_filter_string', function ( string $format, array $links ): string {\n\treturn '&lt;p class=\"msls-hint\"&gt;Diesen Artikel gibt es auch auf: %s&lt;\/p&gt;';\n}, 10, 2 );\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Wenn keine \u00dcbersetzung existiert<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Findet das Plugin nichts auszugeben, liefert <code>Output::__toString()<\/code> einen leeren String. \u00dcber <code>msls_output_no_translation_found<\/code> machen Sie daraus einen Hinweis:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter( 'msls_output_no_translation_found', function ( string $empty ): string {\n\treturn '&lt;p class=\"msls-none\"&gt;Dieser Beitrag liegt noch nicht in Ihrer Sprache vor.&lt;\/p&gt;';\n} );\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr das Widget gibt es daf\u00fcr den eigenen Filter <code>msls_widget_alternative_content<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Flaggen aus eigener Quelle laden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn die Flaggen aus Ihrem Theme oder von einem CDN kommen sollen, biegen Sie das Verzeichnis um. Einzelne Dateinamen regelt der zweite Filter:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter( 'msls_options_get_flag_url', function ( string $url ): string {\n\treturn get_stylesheet_directory_uri() . '\/img\/flags';\n} );\n\nadd_filter( 'msls_options_get_flag_icon', function ( string $icon, string $language ): string {\n\treturn 'de_AT' === $language ? 'at.svg' : $icon;\n}, 10, 2 );\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Den Status der per Quick Create angelegten \u00dcbersetzungen setzen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der REST-Endpunkt hinter Quick Create legt neue \u00dcbersetzungen als Entwurf an. \u00dcber <code>msls_quick_create_post_data<\/code> \u00fcbernehmen Sie stattdessen den Status des Ausgangsbeitrags:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter( 'msls_quick_create_post_data', function ( array $post_data, \\WP_Post $source ): array {\n\t$post_data&#91;'post_status'] = $source-&gt;post_status;\n\n\treturn $post_data;\n}, 10, 2 );\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">An demselben Hook h\u00e4ngt standardm\u00e4\u00dfig <code>lloc\\Msls\\RestApi\\RestApi::prefix_source_language()<\/code> und stellt dem Titel des neuen Beitrags das Locale der Quelle voran. Wenn das in Ihrem Workflow st\u00f6rend ist, h\u00e4ngen Sie den Callback ab:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>remove_filter(\n\t'msls_quick_create_post_data',\n\tarray( \\lloc\\Msls\\RestApi\\RestApi::class, 'prefix_source_language' ),\n\t10\n);\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Nach dem Anlegen einer \u00dcbersetzung eigene Daten kopieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Action <code>msls_quick_create_after_insert<\/code> feuert, nachdem der neue Beitrag im Ziel-Blog angelegt wurde, und zwar noch innerhalb des <code>switch_to_blog()<\/code>-Kontexts. Der richtige Ort, um eigene Meta-Felder mitzunehmen oder eine Benachrichtigung anzusto\u00dfen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_action(\n\t'msls_quick_create_after_insert',\n\tfunction ( int $new_post_id, \\WP_Post $source, int $source_blog_id, int $target_blog_id ): void {\n\t\tupdate_post_meta( $new_post_id, '_my_source_post', $source-&gt;ID );\n\t\tupdate_post_meta( $new_post_id, '_my_source_blog', $source_blog_id );\n\t},\n\t10,\n\t4\n);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">An dieser Action h\u00e4ngt das Plugin selbst <code>RestApi::remember_source_blog()<\/code>, das sich den zuletzt verwendeten Quell-Blog pro Benutzer merkt, damit die Auswahl beim n\u00e4chsten Mal vorbelegt ist.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Berechtigung f\u00fcr Quick Create anpassen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>msls_quick_create_capability<\/code> filtert das Ergebnis der Berechtigungspr\u00fcfung. Sie bekommen die Standardentscheidung, die Beitrags-ID der Quelle (<code>0<\/code> bei Listen-Abfragen), die IDs von Quell- und Ziel-Blog sowie einen Kontext: <code>read<\/code> beim Zugriff auf die Quelle, <code>create<\/code> beim Anlegen im Ziel. So darf ein \u00dcbersetzer ohne Konto im Quell-Blog trotzdem Beitr\u00e4ge in seinen Blog spiegeln:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter(\n\t'msls_quick_create_capability',\n\tfunction ( bool $allowed, int $source_post_id, int $source_blog_id, int $target_blog_id, string $context ): bool {\n\t\tif ( 'read' === $context &amp;&amp; current_user_can( 'edit_posts' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn $allowed;\n\t},\n\t10,\n\t5\n);\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Weiterlesen<\/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 vollst\u00e4ndige Referenz aller <code>msls_*<\/code>-Funktionen<\/li>\n\n\n\n<li><a href=\"https:\/\/msls.co\/de\/developer-docs\/hook-reference\/\">Hook-Referenz<\/a>: alle Actions und Filter, die das Plugin bereitstellt<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Eine Sammlung kurzer Rezepte, die zeigen, wie sich der Multisite Language Switcher in ein Theme oder ein anderes Plugin einf\u00fcgt. Jedes Snippet ist absichtlich minimal gehalten. Behandeln Sie es als Startpunkt: kopieren Sie es in Ihre functions.php oder in ein kleines mu-Plugin und passen Sie es an Ihre Men\u00fc-Positionen, Post Types und Locales an. Die &hellip; <a href=\"https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eSnippets &amp; Beispiele\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":357,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-485","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>Snippets &amp; Beispiele - Multisite Language Switcher<\/title>\n<meta name=\"description\" content=\"Wie kann man bestimmte Integrationen durchf\u00fchren? Hier einige API-Funktionen, die mit dem Multisite Language Switcher ausgeliefert werden.\" \/>\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\/snippets-beispiele\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Snippets &amp; Beispiele - Multisite Language Switcher\" \/>\n<meta property=\"og:description\" content=\"Wie kann man bestimmte Integrationen durchf\u00fchren? Hier einige API-Funktionen, die mit dem Multisite Language Switcher ausgeliefert werden.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/\" \/>\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:26:09+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\\\/snippets-beispiele\\\/\",\"url\":\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/snippets-beispiele\\\/\",\"name\":\"Snippets &amp; Beispiele - Multisite Language Switcher\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/#website\"},\"datePublished\":\"2023-02-28T20:58:09+00:00\",\"dateModified\":\"2026-08-23T11:26:09+00:00\",\"description\":\"Wie kann man bestimmte Integrationen durchf\u00fchren? Hier einige API-Funktionen, die mit dem Multisite Language Switcher ausgeliefert werden.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/snippets-beispiele\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/snippets-beispiele\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/snippets-beispiele\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/msls.co\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Entwickler Dokumentation\",\"item\":\"https:\\\/\\\/msls.co\\\/de\\\/developer-docs\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Snippets &amp; Beispiele\"}]},{\"@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":"Snippets &amp; Beispiele - Multisite Language Switcher","description":"Wie kann man bestimmte Integrationen durchf\u00fchren? Hier einige API-Funktionen, die mit dem Multisite Language Switcher ausgeliefert werden.","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\/snippets-beispiele\/","og_locale":"de_DE","og_type":"article","og_title":"Snippets &amp; Beispiele - Multisite Language Switcher","og_description":"Wie kann man bestimmte Integrationen durchf\u00fchren? Hier einige API-Funktionen, die mit dem Multisite Language Switcher ausgeliefert werden.","og_url":"https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/","og_site_name":"Multisite Language Switcher","article_publisher":"https:\/\/www.facebook.com\/realloc","article_modified_time":"2026-08-23T11:26:09+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\/snippets-beispiele\/","url":"https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/","name":"Snippets &amp; Beispiele - Multisite Language Switcher","isPartOf":{"@id":"https:\/\/msls.co\/de\/#website"},"datePublished":"2023-02-28T20:58:09+00:00","dateModified":"2026-08-23T11:26:09+00:00","description":"Wie kann man bestimmte Integrationen durchf\u00fchren? Hier einige API-Funktionen, die mit dem Multisite Language Switcher ausgeliefert werden.","breadcrumb":{"@id":"https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/msls.co\/de\/developer-docs\/snippets-beispiele\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/msls.co\/de\/"},{"@type":"ListItem","position":2,"name":"Entwickler Dokumentation","item":"https:\/\/msls.co\/de\/developer-docs\/"},{"@type":"ListItem","position":3,"name":"Snippets &amp; Beispiele"}]},{"@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\/485","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=485"}],"version-history":[{"count":6,"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/pages\/485\/revisions"}],"predecessor-version":[{"id":758,"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/pages\/485\/revisions\/758"}],"up":[{"embeddable":true,"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/pages\/357"}],"wp:attachment":[{"href":"https:\/\/msls.co\/de\/wp-json\/wp\/v2\/media?parent=485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}