apply_filters( 'wpml_active_languages', mixed $empty_value, array|string $args )
- Type
- filter
- Version de WPML
- 3.2
Description
Filtre la liste des langues activées (actives) pour un site. Ce filtre est généralement utilisé pour créer des sélecteurs de langue personnalisés.
Ce filtre ne peut fonctionner que lorsque l’objet global $wp_query a été instancié. Cela signifie qu’il doit être appelé après l’exécution de l’action wp.
WPML renvoie les langues actives (activées) d’un site sous forme de tableau avec des informations relatives par langue. Par exemple, pour un site WordPress utilisant l’anglais, le français et l’italien, le hook renverra ceci :
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 ) )
Le filtre wpml_active_languages permet d’effectuer des actions telles que réorganiser le tableau des langues. Ou quelque chose de plus complexe, comme rediriger les langues manquantes vers une URL personnalisée.
Arguments
- $empty_value
- (mixed) (Requis) Il s’agit normalement de la valeur que le filtre va modifier. Nous ne filtrons rien ici, définissez donc cette valeur sur NULL. Cela permet à la fonction de filtre de recevoir réellement la liste complète des arguments.
- $args
- (array|string) (Facultatif) Arguments pour filtrer la sortie des langues.
- skip_missing(bool) Comment traiter les langues sans traductions.
1pour ignorer la langue ou0pour créer un lien vers l’accueil de la langue pour les traductions manquantes. - link_empty_to(string) Fonctionne en conjonction avec skip_missing = 0 et permet d’utiliser des liens personnalisés pour les langues qui n’ont pas de traductions pour l’élément actuel.
{%lang}peut être utilisé comme espace réservé pour le code de la langue. Vide par défaut. - orderby(string) Accepte
id|code|name. La valeur par défaut est custom. L’ordre personnalisé peut être défini dans l’interface d’administration de WordPress sous WPML » Langues » Options du sélecteur de langue. - order(string) Accepte
asc|desc.
- skip_missing(bool) Comment traiter les langues sans traductions.
Exemple d’utilisation
Les arguments du filtre peuvent lui être passés sous forme de string, comme indiqué dans le premier exemple ci-dessous. Ils peuvent également être passés sous forme d’array, comme vous pouvez le voir dans le deuxième exemple plus bas.
Dans l’exemple ci-dessous, nous affichons un sélecteur de langue avec uniquement des drapeaux. Cependant, il y a une petite différence par rapport au sélecteur de langue avec uniquement des drapeaux que vous pouvez configurer depuis vos « Paramètres de langue WPML » dans l’interface d’administration.
La différence ici est que la langue actuelle ne sera pas enveloppée dans une balise d’ancrage. Seules les langues alternatives de la page auront un lien. Jetez-y un œil.
Exemple
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> ';
}
}
}
Dans l’exemple suivant ci-dessous, nous redirigeons les langues manquantes vers une page personnalisée où nous affichons un formulaire de contact pour que les utilisateurs informent l’administrateur du site du contenu non traduit.
Nous mettons également en majuscule le nom de la langue active, c’est-à-dire la langue que nous sommes en train de consulter, en utilisant la fonction
strtoupper de PHP.
Un deuxième exemple
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>';
}
}
}
Hooks associés
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
Les 29 hooks de la catégorie Informations sur les langues à l’échelle du site →