عادة ما تقوم بعض القوالب بعرض القوالب والصفحات والفئات الخاصة استنادًا إلى الهويات (ID). مثلاً، قسم المقالات ‘المميزة’ (Featured) في الصفحة الرئيسية، أو الفئات البارزة.

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

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

يشتمل WPML على خيارين لتنفيذ ذلك.

يمكنك إما تمكين automatic ID adjustment أو استخدام wpml_object_id يدويًا في قالبك.

أيّ الخيارين ينبغي استخدامه؟

لا يحتاج الضبط التلقائي للهوية (automatic ID adjustment) إلى أي تغيير في الأكواد. يمكنك استخدامه مع أيّ قالب وكل شيء “سيعمل كما ينبغي”. الجانب السلبي لذلك الخيار هو أنّه يستغرق وقتًا أطول قليلاً في المعالجة والوصول لقاعدة البيانات، حيث سيقوم 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, string $element_type, bool $return_original_if_missing, mixed $ulanguage_code )

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

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

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

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

يُرجى مراجعة صفحة واجهة البرمجة للتعرف على الأمثلة الأخرى والعثور على المزيد من المعلومات المُفصّلة عن استخدامه.

ترجمة مصفوفات الهويات

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

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. كرر الصور لهذه الصفحة واعرضهم.