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
- (مختلط) (مطلوب) هذه عادةً هي القيمة التي سيعدّلها المرشِّح. نحن لا نرشّح أي شيء هنا، لذا اضبط هذه القيمة على NULL. هذا لكي تتلقى دالة المرشِّح قائمة الوسائط الكاملة فعلياً
- $args
- (مصفوفة|سلسلة نصية) (اختياري) وسائط لترشيح مخرجات اللغة
- skip_missing(منطقي) كيفية التعامل مع اللغات التي لا تحتوي على ترجمات.
1لتخطي اللغة أو0للربط بالصفحة الرئيسية للغة للترجمات المفقودة. - link_empty_to(سلسلة نصية) يعمل بالاقتران مع skip_missing = 0 ويتيح استخدام روابط مخصصة للغات التي لا تحتوي على ترجمات للعنصر الحالي. يمكن استخدام
{%lang}كعنصر نائب لرمز اللغة. فارغ افتراضياً. - orderby(سلسلة نصية) يقبل
id|code|name. القيمة الافتراضية هي custom. يمكن تعريف الترتيب المخصص في لوحة تحكم WordPress ضمن WPML » إعدادات » مبدلات اللغة » خيارات مبدل اللغة - order(سلسلة نصية) يقبل
asc|desc
- skip_missing(منطقي) كيفية التعامل مع اللغات التي لا تحتوي على ترجمات.
مثال على الاستخدام
يمكن تمرير وسائط المرشِّح إليه على شكل سلسلة نصية كما هو موضح في المثال الأول أدناه. ويمكن أيضاً تمريرها على شكل مصفوفة كما ترى في المثال الثاني لاحقاً.
في المثال أدناه، نعرض مبدل لغة يحتوي على أعلام فقط. ومع ذلك، هناك اختلاف بسيط عن مبدل اللغة الذي يحتوي على أعلام فقط والذي يمكنك تكوينه من «إعدادات لغة WPML» في لوحة التحكم.
الاختلاف هنا هو أن اللغة الحالية لن تكون مغلفة داخل رابط. فقط اللغات البديلة للصفحة ستحتوي على رابط. ألقِ نظرة.
مثال
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