تخطي الملاحة
تم تحديثه
يونيو 7, 2024

تعرض العديد من القوالب المقالات والصفحات والتصنيفات الخاصة بشكل خاص، وعادةً ما تستند إلى المعرفات. على سبيل المثال، قسم المنشورات “المميزة” في الصفحة الرئيسية، أو الفئات المميزة.

في بعض الحالات، يتم ترميز هذه المعرفات بشكل ثابت في PHP الخاص بالقالب وفي حالات أخرى، يحددها المستخدم في شاشة إعدادات القالب.

للعرض بشكل صحيح، يحتاج القالب إلى تحديد المعرفات لكل لغة. في WPML تتغير معرّفات المقالات، والصفحات، والفئات، والوسوم في WPML عندما تتغير اللغة، لذا يحتاج القالب إلى استخدام المعرّفات الصحيحة للغة النشطة.

يتضمن WPML خيارين لتحقيق ذلك.

يمكنك إما تمكين تعديل المعرف التلقائي أو استخدام wpml_object_id يدويًا في قالبك.

ما الخيار الذي يجب استخدامه؟

لا يتطلب تعديل المعرف التلقائي أي تغييرات في التعليمات البرمجية الخاصة بك. يمكنك استخدامه مع أي قالب وكل شيء “يعمل فقط”. الجانب السلبي لاستخدامها هو زيادة وقت المعالجة والوصول إلى قاعدة البيانات بشكل طفيف، حيث أن WPML سيرتبط بالعديد من الدوال ويتحقق من صحة الإخراج للغة النشطة.

سيحقق ضبط المعرف اليدوي باستخدام الدالة wpml_object_id نفس النتائج ويمكن أن يكون أكثر كفاءة من حيث المعالجة. ومع ذلك، فإنه يتطلب ترميزًا كبيرًا في القالب.

إذا كنت تنشئ قالبًا من الصفر، فعليك التفكير في استخدام wpml_object_id للقيام بذلك يدويًا. إذا كنت تبدأ بقالب موجود، فقد لا يكون اختراق القالب وتعديله أمرًا واقعيًا، وربما يكون تعديل المعرف الآلي هو الطريقة المثلى.

على أي حال، باستخدام أي مكون إضافي للتخزين المؤقت، يتم تقليل تأثير أداء هذه العملية إلى لا شيء. يوصى دائمًا بالتخزين المؤقت للمواقع مهما كان حجمها. يعمل WPML بشكل جيد مع WP Super Cache و W3 Total Cache (والتي نستخدمها أيضًا على مواقع مختلفة).

1) ضبط المعرفات تلقائيًا

يستطيع WPML الارتباط بوظائف واجهة برمجة تطبيقات WordPress واكتشاف متى يتم تحميل عناصر محددة وضبط المعرفات بحيث يتم ضبط النتائج للغة النشطة.

يتم تمكين هذه الوظيفة افتراضيًا ويمكنك الوصول إليها من خلال WPMLاللغات:

ضبط المعرفات للوظائف متعددة اللغات

سيؤدي ذلك إلى ضبط جميع المعرفات تلقائيًا ويمكن استخدامه في أي قالب WordPress يستخدم واجهة برمجة التطبيقات بشكل صحيح (أي قالب يمكنك العثور عليه تقريبًا).

2) يدويًا، باستخدام الدالة wpml_object_id

بدلًا من ذلك، إذا كان ضبط المعرف التلقائي معطلاً، يمكنك استخدام الدالة wpml_object_id لتحقيق الأمر نفسه يدويًا.

apply_filters( ‘wpml_object_id’، int $element_id، سلسلة $element_type، bool $return_original_if_fissing، مختلطة $ulanguage_code)

ملحوظة: بالنسبة لإصدارات WPML >=3.2، يُرجى استخدام خطاف التصفية wpml_object_id. منذ الإصدار 3.3 من WPML تم تصنيف الدالة icl_object_id على أنها مهملة وتم إزالتها تمامًا في الإصدار 3.3

مثال على الاستخدام

echo apply_filters( 'wpml_object_id', 4, 'category', TRUE  );

قم بإرجاع معرف الفئة باللغة الحالية لمعرف الفئة 4. إذا كانت الترجمة مفقودة فسيتم إرجاع الأصل (هنا: معرّف الفئة 4).

يُرجى مراجعة صفحة واجهة برمجة التطبيقات (API ) الخاصة بنا للاطلاع على أمثلة أخرى والعثور على معلومات أكثر تفصيلاً حول استخدامها

ترجمة مصفوفات المعرفات

في كثير من الأحيان تحتاج إلى تحويل مصفوفة كاملة من معرّفات الكائنات (معرفات الفئات الأكثر شيوعًا). للقيام بذلك، يمكنك استخدام الدالة التالية:

function lang_object_ids($object_id, $type) {
    if( is_array( $object_id ) ){
        $translated_object_ids = array();
        foreach ( $object_id as $id ) {
            $translated_object_ids[] = apply_filters( 'wpml_object_id', $id, $type, true, $current_language );
        }
        return $translated_object_ids;
    } else {
  return apply_filters( 'wpml_object_id', $object_id, $type, true, $current_language );
 }
}

تقبل هذه الدالة أيضًا نوع الكائن كوسيطة.

على سبيل المثال، للحصول على مصفوفة من معرّفات الفئات 1،3 و6 سنستدعي

lang_object_ids(array(1,3,6),'category')

عرض عناصر الصفحة بلغات مختلفة

تسمح معلمة ulanguage_code الاختيارية بمزج عناصر الصفحة بلغات مختلفة.

على سبيل المثال، إذا كان لديك معرض صور ولا تريد تكرار الصور لكل لغة، اتبع هذا:

  1. احصل على معرف الصفحة باللغة التي يوجد بها المعرض.
  2. قم بتكرار الصور لتلك الصفحة وعرضها.