WPML
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

דוגמה לשימוש

זכור לבצע escape לכל פלט. עיין בדף אודות data sanitization/escaping כדי ללמוד עוד על שיטות עבודה מומלצות.

ניתן להעביר את הארגומנטים של הפילטר כ־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

כל 29 ההוקים בקטגוריה מידע שפה ברחבי האתר →