WPML
الحالة
محلولة
أُبلغ عنها لـ
WPML Media Translation 2.7.4
تم حلها في
WPML 4.7.2
وسوم الموضوع
Bug

نظرة عامة على المشكلة

إذا كنت تستخدم إضافة WPML Media Translation، فقد تواجه مشكلة عند ترجمة صورة كبيرة جداً تؤدي إلى تفعيل ميزة التحجيم في WordPress، ثم حذف إحدى الترجمات. نتيجة لذلك، يُحذف ملف الصورة الأصلي أيضاً، وسيكون هناك رابط صورة معطوب في اللغة الأصلية.

حل بديل مؤقت

يُرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.


  • افتح الملف …/wp-content/plugins/sitepress-multilingual-cms/classes/media/class-wpml-attachment-action.php.

  • ابحث عن السطر 171.

  • استبدل:
    	public function delete_file_filter( $file ) {
    		if ( $file ) {
    			$file_name           = $this->get_file_name( $file );
    			$sql                 = "SELECT pm.meta_id, pm.post_id FROM {$this->wpdb->postmeta} AS pm
    						WHERE pm.meta_value = %s AND pm.meta_key='_wp_attached_file'";
    			$attachment_prepared = $this->wpdb->prepare( $sql, [ $file_name ] );
    			$attachment          = $this->wpdb->get_row( $attachment_prepared );
    
    			if ( ! empty( $attachment ) ) {
    				$file = null;
    			}
    		}
    
    		return $file;
    	}

  • بـ:
    	public function delete_file_filter( $file ) {
    		if ( $file ) {
    			$file_name           = $this->get_file_name( $file );
    			$test = explode('.', $file_name);
    			$sliced = array_slice($test, 0, -1);
    			$scaled = implode('.', $sliced);
    			$ext = '-scaled.'. end($test);
    			$processed = $scaled.$ext;
    
    			$sql                 = "SELECT pm.meta_id, pm.post_id FROM {$this->wpdb->postmeta} AS pm 
    						WHERE pm.meta_value = %s OR pm.meta_value = '$processed' AND pm.meta_key='_wp_attached_file'";
    			$attachment_prepared = $this->wpdb->prepare( $sql, [ $file_name ] );
    			$attachment          = $this->wpdb->get_row( $attachment_prepared );
    
    			if ( ! empty( $attachment ) ) {
    				$file = null;
    			}
    		}
    
    		return $file;
    	}

جميع المشاكل المعروفة →