apply_filters( 'wpml_active_languages', mixed $empty_value, array|string $args )
- Tipo
- filter
- Versione di WPML
- 3.2
Descrizione
Filtra l’elenco delle lingue abilitate (attive) per un sito. Questo filtro viene solitamente utilizzato per creare selettori di lingua personalizzati.
Questo filtro può funzionare solo quando l’oggetto globale $wp_query è stato istanziato. Ciò significa che dovrebbe essere richiamato dopo l’esecuzione dell’azione wp.
WPML restituisce le lingue attive (abilitate) di un sito come un array con le relative informazioni per ogni lingua. Ad esempio, per un sito WordPress che utilizza inglese, francese e italiano, l’hook restituirà questo:
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 ) )
Il filtro wpml_active_languages offre un modo per eseguire operazioni come riordinare l’array delle lingue. O qualcosa di più complesso, come reindirizzare le lingue mancanti a un URL personalizzato.
Argomenti
- $empty_value
- (mixed) (Obbligatorio) Normalmente, questo è il valore che il filtro modificherà. Qui non stiamo filtrando nulla, quindi impostalo su NULL. Questo serve affinché la funzione del filtro riceva effettivamente l’elenco completo degli argomenti.
- $args
- (array|string) (Opzionale) Argomenti per filtrare l’output delle lingue
- skip_missing(bool) Come trattare le lingue senza traduzioni.
1per saltare la lingua o0per collegare alla home della lingua in caso di traduzioni mancanti. - link_empty_to(string) Funziona insieme a skip_missing = 0 e permette di utilizzare link personalizzati per le lingue che non hanno traduzioni per l’elemento corrente.
{%lang}può essere utilizzato come segnaposto per il codice della lingua. Vuoto per impostazione predefinita. - orderby(string) Accetta
id|code|name. Il valore predefinito è custom. L’ordine personalizzato può essere definito nell’area di amministrazione di WordPress in WPML » Lingue » Opzioni del selettore di lingua. - order(string) Accetta
asc|desc
- skip_missing(bool) Come trattare le lingue senza traduzioni.
Esempio di utilizzo
Gli argomenti del filtro possono essergli passati come stringa, come mostrato nel primo esempio qui sotto. Possono anche essere passati come array, come puoi vedere nel secondo esempio più in basso.
Nell’esempio seguente mostriamo un selettore di lingua con sole bandiere. Tuttavia, c’è una piccola differenza rispetto al selettore di lingua con sole bandiere che puoi configurare dalle tue “Impostazioni della lingua di WPML” nel back-end di amministrazione.
La differenza qui è che la lingua attuale non sarà racchiusa in un tag anchor. Solo le lingue alternative della pagina avranno un link. Dai un’occhiata.
Esempio
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> ';
}
}
}
Nel prossimo esempio che vedi qui sotto, reindirizziamo le lingue mancanti a una pagina personalizzata dove mostriamo un modulo di contatto, affinché le persone possano notificare all’amministratore del sito i contenuti non tradotti.
Mettiamo anche in maiuscolo il nome della lingua attiva (cioè la lingua che stiamo visualizzando attualmente), utilizzando la funzione
strtoupper di PHP.
Un secondo esempio
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>';
}
}
}
Hook correlati
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
Tutti i 29 hook della categoria Informazioni sulla lingua a livello di sito →