- สถานะ
- เปิด
- รายงานสำหรับ
- Advanced Custom Fields Multilingual 2.1.5
- ปลั๊กอิน/ธีมที่เกี่ยวข้อง
- Advanced Custom Fields (ACF)
- แท็กหัวข้อ
- Compatibility
ภาพรวมของปัญหา
เมื่อใช้งาน Advanced Custom Fields (ACF) ร่วมกับ WPML คุณอาจพบปัญหาที่ตรรกะเงื่อนไขทำงานไม่ถูกต้องในภาษารอง ปัญหานี้เกิดขึ้นเมื่อตรรกะเงื่อนไขอิงตามฟิลด์ที่ใช้การอ้างอิงแบบออบเจ็กต์หรือแบบเทอม เช่น ฟิลด์อนุกรมวิธานหรือฟิลด์ออบเจ็กต์โพสต์
วิธีแก้ปัญหาชั่วคราว
โปรดตรวจสอบให้แน่ใจว่าได้สำรองข้อมูลไซต์ทั้งหมดของคุณก่อนดำเนินการต่อ
- เพิ่มโค้ดต่อไปนี้ลงในไฟล์ functions.php ของธีมของคุณ
/** * WPML Workaround for compsupp-wpmltriage-3649 */ add_action( 'init', function() { if ( defined( 'ICL_SITEPRESS_VERSION' ) ) { add_filter( 'acf/load_field', function ( $field ) { if ( empty( $field['conditional_logic'] ) || ! is_array( $field['conditional_logic'] ) ) { return $field; } foreach ( $field['conditional_logic'] as $group_index => $rules ) { if ( ! is_array( $rules ) ) { continue; } foreach ( $rules as $rule_index => $rule ) { if ( isset( $rule['field'], $rule['value'] ) && is_numeric( $rule['value'] ) ) { // Fetch the parent field $parent_field = acf_get_field( $rule['field'] ); if ( ! isset( $parent_field['type'] ) ) { continue; } if ( $parent_field['type'] === 'taxonomy' ) { $rule['value'] = apply_filters( 'wpml_object_id', $rule['value'], $parent_field['taxonomy'], true ); } elseif ( $parent_field['type'] === 'post_object' ) { $post_types = $parent_field['post_type'] ?? ''; // can be multiple if ( is_array( $post_types ) ) { foreach ( $post_types as $post_type ) { $translated_id = apply_filters( 'wpml_object_id', $rule['value'], $post_type, true ); if ( $translated_id && $translated_id !== $rule['value'] ) { $rule['value'] = $translated_id; break; } } } else { $rule['value'] = apply_filters( 'wpml_object_id', $rule['value'], $post_types, true ); } } $field['conditional_logic'][ $group_index ][ $rule_index ] = $rule; } } } return $field; }, 100 ); } } );