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 ) )
url. לעולם אל תבנה אותה מ־language_code. לגרמנית לעיל יש את הקוד de והכתובת /de-de/. WPML מייחד את קוד ה־URL כאשר אתה מוסיף שתי מדינות של אותה שפה באותו שלב, בעל האתר יכול גם לערוך אותו, ובמצב דומיין הכתובת היא הדומיין שבעל האתר הקליד.המפתחות ב־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
- 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'] ) . '">';
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