WPML
apply_filters( 'wpml_active_languages', mixed $empty_value, array|string $args )
Typ
filter
WPML-Version
3.2

Beschreibung

Filtert die Liste der für eine Website aktivierten (aktiven) Sprachen. Dieser Filter wird normalerweise verwendet, um benutzerdefinierte Sprachumschalter zu erstellen.

Dieser Filter funktioniert nur, wenn das globale $wp_query-Objekt instanziiert wurde. Das bedeutet, dass er aufgerufen werden sollte, nachdem die wp-Action ausgeführt wurde.

WPML gibt die aktiven (aktivierten) Sprachen einer Website als Array mit entsprechenden Informationen pro Sprache zurück. Zum Beispiel gibt der Hook für eine WordPress-Website, die Englisch, Französisch und Italienisch verwendet, Folgendes zurück:

Array

(

 [en] => Array

  (

   [id] => 1

   [active] => 1

   [default_locale] => en_US

   [native_name] => English

   [missing] => 0

   [translated_name] => English

   [language_code] => en

   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/en.png

   [url] => http://yourdomain/about

  )



 [fr] => Array

  (

   [id] => 4

   [active] => 0

   [default_locale] => fr_FR

   [native_name] => Français

   [missing] => 0

   [translated_name] => French

   [language_code] => fr

   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/fr.png

   [url] => http://yourdomain/fr/a-propos

  )



 [it] => Array

  (

   [id] => 27

   [active] => 0

   [default_locale] => it_IT

   [native_name] => Italiano

   [missing] => 0

   [translated_name] => Italian

   [language_code] => it

   [country_flag_url] => http://yourdomain/wpmlpath/res/flags/it.png

   [url] => http://yourdomain/it/circa

  )

)

Der Filter wpml_active_languages bietet die Möglichkeit, beispielsweise das Sprachen-Array neu zu ordnen. Oder etwas Komplexeres, wie das Umleiten fehlender Sprachen zu einer benutzerdefinierten URL.

Argumente

$empty_value
(mixed) (Erforderlich) Dies ist normalerweise der Wert, den der Filter modifiziert. Wir filtern hier nichts, setzen Sie dies also auf NULL. Dies ist erforderlich, damit die Filterfunktion tatsächlich die vollständige Argumentenliste empfängt.
$args
(array|string) (Optional) Argumente zum Filtern der Sprachausgabe
  • skip_missing(bool) Wie Sprachen ohne Übersetzungen behandelt werden sollen. 1, um die Sprache zu überspringen, oder 0, um bei fehlenden Übersetzungen zur Startseite der Sprache zu verlinken.
  • link_empty_to(string) Funktioniert in Verbindung mit skip_missing = 0 und ermöglicht die Verwendung benutzerdefinierter Links für die Sprachen, die keine Übersetzungen für das aktuelle Element haben. {%lang} kann als Platzhalter für den Sprachcode verwendet werden. Standardmäßig leer.
  • orderby(string) Akzeptiert id|code|name. Standardmäßig auf custom gesetzt. Die benutzerdefinierte Reihenfolge kann im WordPress-Admin-Bereich unter WPML » Sprachen » Sprachumschalter-Optionen definiert werden.
  • order(string) Akzeptiert asc|desc.

Anwendungsbeispiel

Denken Sie daran, jegliche Ausgabe zu escapen. Weitere Informationen zu Best Practices finden Sie auf der Seite über Datenbereinigung/Escaping.

Die Argumente des Filters können ihm als String übergeben werden, wie im ersten Beispiel unten gezeigt. Sie können auch als Array übergeben werden, wie Sie im zweiten Beispiel weiter unten sehen können.

Im folgenden Beispiel zeigen wir einen Sprachumschalter an, der nur aus Flaggen besteht. Es gibt jedoch einen kleinen Unterschied zu dem reinen Flaggen-Sprachumschalter, den Sie in Ihren „WPML-Spracheinstellungen“ im Admin-Backend konfigurieren können.

Der Unterschied besteht hier darin, dass die aktuelle Sprache nicht in ein Anchor-Tag eingeschlossen wird. Nur die alternativen Sprachen der Seite erhalten einen Link. Sehen Sie selbst.

Beispiel
function my_flag_only_language_switcher() {
    $languages = apply_filters( 'wpml_active_languages', NULL, 'orderby=id&order=desc' );

    if ( !empty( $languages ) ) {
        foreach( $languages as $l ) {
            if ( !$l['active'] ) echo ' <a href="' . esc_url( $l['url'] ) . '">';
            echo '<img src="' . esc_url ( $l['country_flag_url'] ) . '" height="12" alt="' . esc_attr( $l['language_code'] ) . '" width="18" />';
            if ( !$l['active'] ) echo '</a> ';
        }
    }
}

Im nächsten Beispiel, das Sie unten sehen, leiten wir fehlende Sprachen auf eine benutzerdefinierte Seite um, auf der wir ein Kontaktformular anzeigen, damit Besucher den Website-Administrator über unübersetzte Inhalte informieren können.
Außerdem schreiben wir den Sprachnamen der aktiven Sprache, d. h. der Sprache, die wir gerade betrachten, mithilfe der PHP-Funktion strtoupper groß.
Ein zweites Beispiel
function my_custom_language_switcher() {
    $languages = apply_filters( 'wpml_active_languages', NULL, array( 'skip_missing' => 0, 'link_empty_to' => 'http://domain.com/missing-translation-contact-form' ) );

    if( !empty( $languages ) ) {
        foreach( $languages as $language ){
			$native_name = $language['active'] ? strtoupper( $language['native_name'] ) : $language['native_name'];

            if( !$language['active'] ) echo '<a href="' . esc_url( $language['url'] ) . '">';
            echo esc_html( $native_name ) . ' ';
            if( !$language['active'] ) echo '</a>';
        }
    }
}

wpml_decode_custom_field, wpml_footer_language_selector, wpml_add_language_form_field, wpml_ls_exclude_in_menu, wpml_is_rtl, wpml_alternate_hreflang, wpml_head_langs, wpml_must_translate_canonical_url, wpml_browser_redirect_language_params, wpml_encode_custom_field

Alle 29 Websiteübergreifende Sprachinformationen-Hooks →