apply_filters( 'wpml_active_languages', mixed $empty_value, array|string $args )
- Typ
- filter
- Kategorie
- Websiteübergreifende Sprachinformationen
- 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 kann nur funktionieren, wenn das globale $wp_query (wird in einem neuen Tab geöffnet)-Objekt instanziiert wurde. Das bedeutet, dass er aufgerufen werden sollte, nachdem die wp-Aktion (wird in einem neuen Tab geöffnet) ausgeführt wurde.
WPML gibt die aktiven (aktivierten) Sprachen einer Website als Array zurück, mit Informationen zu jeder Sprache. Das folgende Beispiel stammt von einer WPML 5.0-Website. Ihre Standardsprache ist Englisch (Vereinigte Staaten), Deutsch wird unter /de-de/ bereitgestellt und Arabisch wird unter /ar/ bereitgestellt:
Array ( [en-us] => Array ( [id] => 1 [active] => 1 [default_locale] => en_US [native_name] => English (United States) [missing] => 0 [translated_name] => English (United States) [language_code] => en-us [country] => US [display_code] => en-us [country_flag_url] => https://example.com/wp-content/plugins/sitepress-multilingual-cms/res/flags/country/us.svg [url] => https://example.com/about ) [de] => Array ( [id] => 3 [active] => 0 [default_locale] => de_DE [native_name] => Deutsch [missing] => 0 [translated_name] => German [language_code] => de [country] => DE [display_code] => de-de [country_flag_url] => https://example.com/wp-content/plugins/sitepress-multilingual-cms/res/flags/country/de.svg [url] => https://example.com/de-de/ueber-uns ) [ar] => Array ( [id] => 30 [active] => 0 [default_locale] => ar [native_name] => العربية [missing] => 0 [translated_name] => Arabic [language_code] => ar [country] => [display_code] => ar [country_flag_url] => https://example.com/wp-content/plugins/sitepress-multilingual-cms/res/flags/language/ar.svg [url] => https://example.com/ar/about ) )
url aus. Erstellen Sie sie niemals aus language_code. Deutsch hat oben den Code de und die Adresse /de-de/. WPML qualifiziert den URL-Code, wenn Sie zwei Länder einer Sprache im selben Schritt hinzufügen. Der Website-Betreiber kann ihn auch bearbeiten, und im Domain-Modus ist die Adresse die Domain, die der Betreiber eingegeben hat.Die Keys in WPML 5.0
- language_code ist der gespeicherte Code. Eine Sprache, die ein Land beinhaltet, hat das Land im Code, zum Beispiel
en-usoderde-at. Deutsch, Spanisch, Französisch, Italienisch und Niederländisch behalten den einfachen Code für ihr Heimatland (de,es,fr,it,nl). Portugiesisch und Chinesisch beinhalten immer ein Land. Arabisch und andere Sprachen mit nur einem Land enthalten keines. Eine Sprache behält den Code, mit dem sie erstellt wurde, sodass eine aktualisierte Websiteenverwenden kann, wo eine neue Websiteen-usverwendet. - country ist der Ländercode der Sprache. Er ist leer bei einer Sprache ohne Land.
- display_code ist der Code, den WPML in URLs verwendet. Er unterscheidet sich von
language_code, wenn WPML den Code qualifiziert oder wenn der Website-Betreiber ihn bearbeitet. Um dieselbe Zuordnung in Ihrem eigenen Code auszulesen, verwenden Sie den Filter wpml_language_codes_map. - country_flag_url ist die URL der Flagge. Sie ist ein leerer String, wenn die Website den Sprachcode anstelle einer Flagge anzeigt. Testen Sie den Wert also, bevor Sie ihn ausgeben. Die eigenen Flaggen von WPML sind
res/flags/country/<country>.svgfür eine Sprache mit einem Land undres/flags/language/<code>.svgfür eine Sprache ohne Land. Eine benutzerdefinierte Flagge stammt aus dem Uploads-Ordner. Erstellen Sie den Pfad niemals selbst:res/flags/sv.svgist die Flagge von Schweden undres/flags/country/sv.svgist die Flagge von El Salvador.
Auf einer Website, die das Upgrade von WPML nicht abgeschlossen hat, kann country NULL sein und display_code kann fehlen. Verwenden Sie isset(), bevor Sie sie auslesen.
Der Filter wpml_active_languages bietet eine Möglichkeit, Dinge wie das Neuordnen des Sprach-Arrays zu tun. Oder etwas Komplexeres, wie das Umleiten fehlender Sprachen auf eine benutzerdefinierte 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, oder0, 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 » Einstellungen » Sprachumschalter » Sprachumschalter-Optionen definiert werden. - order(string) Akzeptiert
asc|desc.
- skip_missing(bool) Wie Sprachen ohne Übersetzungen behandelt werden sollen.
Beispielhafte Verwendung
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'] ) . '">';
if ( '' !== $l['country_flag_url'] ) {
echo '<img src="' . esc_url( $l['country_flag_url'] ) . '" height="12" alt="' . esc_attr( $l['language_code'] ) . '" width="18" />';
} else {
echo esc_html( $l['language_code'] );
}
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>';
}
}
}
Verwandte Hooks
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