WPML
สถานะ
แก้ไขแล้ว
รายงานสำหรับ
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;
    		};

ปัญหาที่ทราบแล้วทั้งหมด →