apply_filters( 'wpml_active_languages', mixed $empty_value, array|string $args )
- סוג
- filter
- קטגוריה
- מידע שפה ברחבי האתר
- גרסת WPML
- 3.2
תיאור
מסנן את רשימת השפות המופעלות (פעילות) עבור אתר. פילטר זה משמש בדרך כלל ליצירת בוררי שפות מותאמים אישית.
פילטר זה יכול לפעול רק כאשר האובייקט הגלובלי $wp_query מאותחל. המשמעות היא שיש לקרוא לו לאחר שה־wp action מתבצע.
WPML מחזיר את השפות הפעילות (המופעלות) של אתר כמערך עם מידע רלוונטי לכל שפה. לדוגמה, עבור אתר WordPress שפועל באנגלית, בצרפתית ובאיטלקית, ההוק יחזיר את התוצאה הבאה:
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 ) )
הפילטר wpml_active_languages מספק דרך לבצע פעולות כמו שינוי הסדר של מערך השפות. או משהו מורכב יותר, כמו הפניית שפות חסרות ל־URL מותאם אישית.
ארגומנטים
- $empty_value
- (mixed) (נדרש) זהו בדרך כלל הערך שהפילטר ישנה. אנחנו לא מסננים כאן כלום, לכן הגדר זאת ל־NULL. זה נועד כדי שפונקציית הפילטר תקבל בפועל את רשימת הארגומנטים המלאה
- $args
- (array|string) (אופציונלי) ארגומנטים לסינון פלט השפה
- skip_missing(bool) כיצד להתייחס לשפות ללא תרגומים.
1כדי לדלג על שפה או0כדי לקשר לדף הבית של השפה עבור תרגומים חסרים. - link_empty_to(string) עובד בשילוב עם skip_missing = 0 ומאפשר שימוש בקישורים מותאמים אישית לשפות שאין להן תרגומים לאלמנט הנוכחי. ניתן להשתמש ב־
{%lang}כמציין מיקום עבור קוד השפה. ריק כברירת מחדל. - orderby(string) מקבל
id|code|name. ברירת המחדל היא custom. ניתן להגדיר את הסדר המותאם אישית באזור הניהול של WordPress תחת WPML » שפות » אפשרויות בורר שפות - order(string) מקבל
asc|desc
- skip_missing(bool) כיצד להתייחס לשפות ללא תרגומים.
דוגמה לשימוש
ניתן להעביר את הארגומנטים של הפילטר כ־string כפי שמוצג בדוגמה הראשונה להלן. ניתן גם להעביר אותם כ־array כפי שתוכל לראות בדוגמה השנייה בהמשך.
בדוגמה להלן אנו מציגים בורר שפות של דגלים בלבד. עם זאת, ישנו הבדל קטן מבורר השפות של דגלים בלבד שתוכל להגדיר דרך “הגדרות השפה של WPML” באזור הניהול.
ההבדל כאן הוא שהשפה הנוכחית לא תיעטף בתוך anchor. רק לשפות החלופיות של העמוד יהיה קישור. ראה להלן.
דוגמה
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> ';
}
}
}
בדוגמה הבאה שאתה רואה להלן, אנו מפנים שפות חסרות לעמוד מותאם אישית שבו אנו מציגים טופס יצירת קשר כדי שאנשים יוכלו להודיע למנהל האתר על תוכן שלא תורגם.
אנו גם הופכים לאותיות רישיות את שם השפה של השפה הפעילה, כלומר השפה שאנו צופים בה כעת, באמצעות הפונקציה
strtoupper של PHP.
דוגמה שנייה
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