Snippets & Beispiele

Oft bekomme ich kleine Anfragen, wie man bestimmte Integrationen durchführen kann. Es gibt bereits einige API-Funktionen, die mit dem Plugin ausgeliefert werden. Manchmal ist die zusätzliche Arbeit für benutzerdefinierte Plugins. Der folgende Inhalt ist eine Sammlung von Lösungen, die ich anderen Nutzern vorgeschlagen habe.

Die aktuelle Sprache feststellen

Sie sollten die von WordPress bereitgestellte Funktion get_locale() verwenden, wenn Sie die Sprache des aktuellen Blogs wissen möchten.

Der Multisite Language Switcher verfügt über eine ähnliche Funktion, welche die Sprache auf en_US setzt, falls sie leer ist.

use lloc\Msls\MslsBlogCollection;
​
$blog     = MslsBlogCollection::instance()->get_current_blog();
$language = $blog->get_language(); // en_US
$alpha2   = $blog->get_alpha2(); // en

Navigationsmenü manipulieren

Die Klasse MslsOutput ist nützlich, wenn Sie die Elemente eines Navigationsmenüs manipulieren möchten.

Zuerst sollten Sie prüfen, ob das Plugin aktiv ist (beispielsweise, ob die Funktion the_msls() existiert) und ob es das primäre Menü in Ihrem Thema ist (der Name kann variieren). Dann kann man das Objekt erstellen und das Array der Links (in meinem Beispiel nur die verlinkten Flaggen) zu den Übersetzungen anfordern. Danach kann man die Ausgabe erstellen, sie zu $items hinzufügen und zurückgeben.

Hier eine vereinfachte Version des Add-ons MslsMenu:

function my_custom_menu_item( $items, $args ) {
    if ( function_exists ( 'the_msls' ) && 'primary' == $args->theme_location ) {
        $obj = lloc\Msls\MslsOutput::init();
        $arr = $obj->get( 2 );
        if ( !empty( $arr ) ) {
            $items .= '<li>' . implode( '</li><li>', $arr ) . '</li>';
        }
    }
    return $items;
}
add_filter( 'wp_nav_menu_items', 'my_custom_menu_item', 10, 2 );

Sie können natürlich auch andere Werte als 2 übergeben. Hier ist eine Liste mit den verschiedenen Möglichkeiten:

/* MslsLink - Image + text */
$arr = $obj->get( 0 );

/* MslsLinkTextOnly - Just text	*/
$arr = $obj->get( 1 );

/* MslsLinkImageOnly - Just image */
$arr = $obj->get( 2 );

/* MslsLinkTextImage - Text + image */
$arr = $obj->get( 3 );

Die Blog-Auflistung

Wenn Sie die Auflistung von Blogs, welches das Plugin erstellt, in Ihren Funktionen (und Filtern) verwenden möchten, können Sie Code wie diesen schreiben:

use lloc\Msls\MslsBlogCollection;
​
function my_print_something() {
    foreach ( MslsBlogCollection::instance()->get() as $blog ) {
        printf(
            '<link rel="alternate" hreflang="%1$s" href="http://%1$s.example.com/" />',
            $blog->get_language()
        );
    }
}
add_action( 'wp_head', 'my_print_something' );`

Dies ist nur eine vereinfachte Version dessen, was der Multisite Language Switcher bereits tut. Es werden die Link-Verweise der zusammengehörigen Blogs im HTML-Header ausgegeben.

Der Artikel ist auch in English verfügbar.