- สถานะ
- แก้ไขแล้ว
- รายงานสำหรับ
- 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’ ฯลฯ) ด้วยชื่อฟิลด์ในเว็บไซต์ของคุณ ใช้ขั้นตอนต่อไปนี้เพื่อดำเนินการดังกล่าว
ในตัวอย่างข้างต้น เรามีสิ่งต่อไปนี้ในกลุ่มฟิลด์ของเรา:
– ฟิลด์อนุกรมวิธาน 1 ฟิลด์
– ฟิลด์ repeater 1 ฟิลด์ที่มีฟิลด์อนุกรมวิธานและฟิลด์ repeater “รอง” อีกหนึ่งฟิลด์ที่มีฟิลด์อนุกรมวิธานของตัวเอง
ซึ่งหมายความว่าการซ้อนกันจะมีลักษณะดังนี้:
Taxonomy
Repeater {
Taxonomy
Repeater Child {
Taxonomy
}
}
ซึ่งหมายความว่าคุณต้องตั้งค่าฟิลด์ตามความต้องการของคุณ ดังที่เราได้ทำในตัวอย่างที่แสดงในภาพต่อไปนี้
เมื่อคุณแก้ไขโพสต์ หน้า หรือประเภทโพสต์ใดก็ตามที่คุณใช้ฟิลด์กำหนดเอง คุณจะเห็นฟิลด์เหล่านั้นทำงาน ภาพต่อไปนี้แสดงให้เห็นว่ามีลักษณะอย่างไรในตัวอย่างของเรา:
หมายเหตุ: คุณควรแทนที่คู่ key =>; value ของอาร์เรย์ด้วยค่าที่เหมาะสม
แทนที่ keys ของอาร์เรย์:
หากคุณสังเกตชื่อฟิลด์ของเราที่เป็นคีย์อย่างละเอียด คุณจะสังเกตเห็นว่าฟิลด์ได้รับการจัดทำดัชนีโดยเริ่มจาก 0
นั่นหมายความว่า repeater แรกของคุณคือ 0 ตัวที่สองคือ 1 และต่อไปเรื่อย ๆ หมายเลข repeater เหล่านั้นจะถูกแยกออกจากประเภทฟิลด์รองอื่น ๆ ด้วยขีดล่างเป็น _0_, _1_, _2_…
ตัวอย่างเช่น ชื่อของฟิลด์อนุกรมวิธานภายใน repeater แรกของเราคือ 'repeater_field_0_repeater_taxonomy_field' และนั่นคือชื่อที่เราจะใส่ในอาร์เรย์ข้อมูลโค้ดด้านบน ตรวจสอบให้แน่ใจว่าคุณมุ่งเน้นไปที่สามสิ่งนี้:
- ภายในอาร์เรย์ ให้ใส่ทุกฟิลด์ที่คุณใช้เป็นคีย์ และตรวจสอบให้แน่ใจว่าเป็นหนึ่งในประเภทที่ระบุไว้ด้านล่าง
- ชื่อของฟิลด์ได้รับการจัดรูปแบบอย่างถูกต้อง
- ชื่อของฟิลด์ถูกเพิ่มสำหรับทุกแถว repeater แยกกัน เช่น หากคุณมีชื่อแถว repeater 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'
แทนที่ values เช่น: ‘some_taxonomy_name’, ‘some_other_taxonomy_name’ ฯลฯ ตามความเหมาะสม นี่คือประเภทขององค์ประกอบที่ ID สังกัดอยู่ ซึ่งสามารถเป็น post, page, attachment, {custom post type key}, nav_menu, nav_menu_item, category, post_tag, {custom taxonomy key}
สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบเกี่ยวกับฮุกของเราที่นี่


