- الحالة
- محلولة
- أُبلغ عنها لـ
- WPML Multilingual CMS 3.3.6
نظرة عامة على المشكلة
يوفر ملحق Repeater نوع حقل Repeater مصمماً ليحتوي على أنواع حقول أخرى. لكي تتمكن من تكرار المحتوى داخل حقل Repeater، من الضروري إضافة مقتطف برمجي وإضافة أسماء الحقول بعناية كما هو موضح في قسم الحل البديل المؤقت.
توجد هذه المشكلة حالياً في أنواع الحقول التالية:
- صورة
- ملف
- معرض
- تصنيف
- كائن مقالة
- رابط صفحة
ملاحظة: يمكنك استخدام المقتطف البرمجي المزوّد لجميع أنواع الحقول الأخرى. الاختلاف الوحيد هو في اسم الحقل. هذا يعني أنه يمكنك استخدام هذا المقتطف لحل مشكلات تكرار أنواع حقول Repeater وأنواع الحقول العادية على حد سواء.
يمكنك العثور على الأخطاء المعروفة لأنواع الحقول هذه هنا
حل بديل مؤقت
يمكنك استخدام هذا المقتطف البرمجي في ملف functions.php الخاص بك لكي يعمل التكرار بشكل صحيح:
function wpml_fix_acf_duplication( $value_to_filter, $target_language, $meta_data ) {
// Field names should be placed into following array.
$fields = array(
'taxonomy_field' => 'some_taxonomy_name',
'repeater_field_0_repeater_taxonomy_field' => 'some_other_taxonomy_name',
'repeater_field_1_repeater_taxonomy_field' => 'some_other_taxonomy_name',
'repeater_field_0_repeater_child_0_repeater_child_taxonomy_field' => 'some_other_taxonomy_name',
'repeater_field_0_repeater_child_1_repeater_child_taxonomy_field' => 'some_other_taxonomy_name',
'repeater_field_1_repeater_child_0_repeater_child_taxonomy_field' => 'some_other_taxonomy_name',
'repeater_field_1_repeater_child_1_repeater_child_taxonomy_field' => 'some_other_taxonomy_name'
);
if ( array_key_exists( $meta_data['key'], $fields ) ) {
$value = maybe_unserialize( $value_to_filter );
if ( is_array( $value ) ) {
// If custom field value contain array of IDs to translate, usually used for gallery and taxonomy field types.
$translated_ids = array();
foreach ( $value as $v ) {
$translated_ids[] = apply_filters( 'wpml_object_id', $v, $fields[ $meta_data['key'] ], true, $target_language );
}
return maybe_serialize( $translated_ids );
} else {
// If custom field value contain single ID to translate, usually used for image and file field types.
$translated_id = apply_filters( 'wpml_object_id', $value, $fields[ $meta_data['key'] ], true, $target_language );
return $translated_id;
}
}
return $value_to_filter;
}
add_filter( 'wpml_duplicate_generic_string', 'wpml_fix_acf_duplication', 999, 3 );
يُرجى ملاحظة أنه يجب عليك استبدال أسماء الحقول ('taxonomy_field’، ‘repeater_field_0_repeater_taxonomy_field’، إلخ) بالأسماء الموجودة في موقعك. اتبع الخطوات التالية للقيام بذلك.
في المثال أعلاه، لدينا ما يلي في مجموعة الحقول الخاصة بنا:
- حقل تصنيف واحد
- حقل تكرار واحد يحتوي على حقل تصنيف وحقل تكرار «ابن» آخر يحتوي على حقل تصنيف خاص به.
هذا يعني أن التداخل يبدو هكذا:
Taxonomy
Repeater {
Taxonomy
Repeater Child {
Taxonomy
}
}
هذا يعني أنك بحاجة إلى ضبط حقولك وفقاً لاحتياجاتك، كما فعلنا في المثال الموضح في الصورة التالية.
عندما تقوم بتعديل مقالتك أو صفحتك أو أي نوع منشور تستخدم حقولك المخصصة معه، سترى هذه الحقول قيد العمل. توضح الصورة التالية كيف يبدو ذلك في مثالنا:
ملاحظة: يجب عليك استبدال أزواج key =>; value للمصفوفة بالقيم المناسبة.
استبدال مفاتيح المصفوفة:
إذا نظرت بعناية إلى أسماء حقولنا كمفاتيح، ستلاحظ أن الحقول مفهرسة بدءاً من 0.
هذا يعني أن حقل التكرار الأول هو 0، والثاني هو 1 وهكذا. تُفصل أرقام حقول التكرار هذه بشرطات سفلية عن أنواع الحقول الأبناء الأخرى باستخدام _0_، _1_، _2_…
على سبيل المثال، اسم حقل التصنيف داخل حقل التكرار الأول لدينا هو 'repeater_field_0_repeater_taxonomy_field'، وهذا هو الاسم الذي سنضعه في مصفوفة المقتطف البرمجي أعلاه. تأكد من التركيز على ثلاثة أشياء:
- داخل المصفوفة، كمفاتيح، ضع كل حقل تستخدمه وتأكد من أنه من أحد الأنواع المدرجة أدناه
- تنسيق اسم الحقل بشكل صحيح
- إضافة اسم الحقل لكل صف تكرار على حدة، أي إذا كان لديك أسماء لـ 10 صفوف تكرار، فستكون كما يلي: 'repeater_field_0_some_custom_field'، 'repeater_field_1_some_custom_field'، 'repeater_field_2_some_custom_field' … وصولاً إلى 'repeater_field_9_some_custom_field'.
استبدل القيم مثل: ‘some_taxonomy_name’، ‘some_other_taxonomy_name’ إلخ وفقاً لذلك. هذا هو نوع العنصر الذي ينتمي إليه المعرف. يمكن أن يكون post, page, attachment, {custom post type key}, nav_menu, nav_menu_item, category, post_tag, {custom taxonomy key}
لمزيد من المعلومات، يُرجى الاطلاع على وثائق الخطّافات الخاصة بنا هنا.


