- สถานะ
- แก้ไขแล้ว
- รายงานสำหรับ
- WPML Media Translation 2.7.3
- แก้ไขใน
- WPML 4.7.2
- แท็กหัวข้อ
- Bug
ภาพรวมของปัญหา
ใน WPML Media Translation มีลักษณะการทำงานที่ผิดปกติซึ่งการแปลรูปภาพรูปหนึ่งจะนำคำแปลนั้นไปใช้กับรูปภาพทั้งหมดที่มีรูปแบบชื่อไฟล์คล้ายกันโดยไม่ได้ตั้งใจ ตัวอย่างเช่น การแปลรูปภาพชื่อ img_file1.jpg จะส่งผลกระทบต่อรูปภาพอื่น ๆ เช่น img_file10.jpg หรือ img_file11.jpg… ทั้ง ๆ ที่เป็นรูปภาพคนละรูปกัน
ปัญหานี้เกิดจากวิธีที่การแปลสื่อประมวลผลและแทนที่รูปภาพตามรูปแบบชื่อไฟล์ ทำให้เกิดการแทนที่โดยไม่ได้ตั้งใจเมื่อชื่อไฟล์มีโครงสร้างส่วนใหญ่เหมือนกัน
วิธีแก้ปัญหาชั่วคราว
โปรดตรวจสอบให้แน่ใจว่าคุณได้สำรองข้อมูลแบบเต็มของไซต์ก่อนดำเนินการต่อ
- เปิดไฟล์ …/wp-content/plugins/wpml-media-translation/classes/media-translation/class-wpml-media-translated-images-update.php
- ค้นหาบรรทัดที่ 76
- แทนที่:
$media_src_contains_pre_update = function ( $media_src ) use ( $pre_update_translated_media_guid ) { $thumb_file_name = basename( $pre_update_translated_media_guid ); $pre_update_translated_media_parts = explode( '.', $thumb_file_name ); $media_src_extension = pathinfo( $media_src, PATHINFO_EXTENSION ); $pre_update_translated_media_extension = is_array( $pre_update_translated_media_parts ) ? end( $pre_update_translated_media_parts ) : null; return $pre_update_translated_media_parts[0] && false !== strpos( $media_src, $pre_update_translated_media_parts[0] ) && $media_src_extension === $pre_update_translated_media_extension; }; - ด้วย:
$media_src_contains_pre_update = function ( $media_src ) use ( $pre_update_translated_media_guid ) { $thumb_file_name = basename( $pre_update_translated_media_guid ); $pre_update_translated_media_parts = explode( '.', $thumb_file_name ); $media_src_extension = pathinfo( $media_src, PATHINFO_EXTENSION ); $pre_update_translated_media_extension = is_array( $pre_update_translated_media_parts ) ? end( $pre_update_translated_media_parts ) : null; $pattern = "/-d+xd+.".$pre_update_translated_media_parts[1]."$/"; $try = preg_replace($pattern, '.'. $pre_update_translated_media_parts[1], $media_src); return $pre_update_translated_media_parts[0] && false !== str_contains( implode('.', $pre_update_translated_media_parts), $try ) && $media_src_extension === $pre_update_translated_media_extension; };