WPML
apply_filters( 'wpml_active_languages', mixed $empty_value, array|string $args )
סוג
filter
גרסת WPML
3.2

תיאור

מסנן את רשימת השפות המופעלות (הפעילות) עבור אתר. בדרך כלל נעשה שימוש בפילטר זה ליצירת בוררי שפות מותאמים אישית.

פילטר זה יכול לעבוד רק כאשר האובייקט הגלובלי $wp_query (נפתח בלשונית חדשה) נוצר. המשמעות היא שיש לקרוא לו לאחר שהפעולה wp action (נפתח בלשונית חדשה) מתרחשת.

WPML מחזיר את השפות הפעילות (המופעלות) של אתר כמערך, עם מידע על כל שפה. הדוגמה להלן לקוחה מאתר ב־WPML 5.0. שפת ברירת המחדל שלו היא אנגלית (ארצות הברית), גרמנית מוגשת ב־/de-de/, וערבית מוגשת ב־/ar/:

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
  )
)

המפתחות ב־WPML 5.0

  • language_code הוא הקוד השמור. שפה הכוללת מדינה מכילה את המדינה בקוד, לדוגמה en-us או de-at. גרמנית, ספרדית, צרפתית, איטלקית והולנדית שומרות על הקוד הפשוט עבור מדינת המקור שלהן (de, es, fr, it, nl). פורטוגזית וסינית תמיד כוללות מדינה. ערבית ושפות אחרות של מדינה יחידה אינן כוללות מדינה. שפה שומרת על הקוד שאיתו נוצרה, כך שאתר משודרג יכול להשתמש ב־en במקום שבו אתר חדש משתמש ב־en-us.
  • country הוא קוד המדינה של השפה. הוא ריק עבור שפה ללא מדינה.
  • display_code הוא הקוד שבו WPML משתמש בכתובות URL. הוא שונה מ־language_code כאשר WPML מייחד את הקוד, או כאשר בעל האתר עורך אותו. כדי לקרוא את אותה מפה בקוד שלך, השתמש בפילטר wpml_language_codes_map.
  • country_flag_url הוא ה־URL של הדגל. הוא מחרוזת ריקה כאשר האתר מציג את קוד השפה במקום דגל, לכן בדוק את הערך לפני שאתה מדפיס אותו. הדגלים של WPML עצמו הם res/flags/country/<country>.svg עבור שפה עם מדינה, ו־res/flags/language/<code>.svg עבור שפה ללא מדינה. דגל מותאם אישית מגיע מתיקיית ההעלאות. לעולם אל תבנה את הנתיב בעצמך: res/flags/sv.svg הוא הדגל של שוודיה, ו־res/flags/country/sv.svg הוא הדגל של אל סלבדור.

באתר שלא סיים את השדרוג של WPML, country יכול להיות NULL ו־display_code יכול להיות חסר. השתמש ב־isset() לפני שאתה קורא אותם.

הפילטר 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'] ) . '">';
            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> ';
        }
    }
}

בדוגמה הבאה שאתה רואה להלן, אנו מפנים שפות חסרות לעמוד מותאם אישית שבו אנו מציגים טופס יצירת קשר כדי שאנשים יוכלו להודיע למנהל האתר על תוכן שלא תורגם.
אנו גם הופכים לאותיות רישיות את שם השפה של השפה הפעילה, כלומר השפה שאנו צופים בה כעת, באמצעות הפונקציה 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

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