WPML
Trạng thái
Đã giải quyết
Được báo cáo cho
WPML Multilingual & Multicurrency for WooCommerce 5.4.2
Đã giải quyết trong
WooCommerce Multilingual & Multicurrency 5.4.3
Thẻ chủ đề
Bug

Tổng quan về lỗi

Với phiên bản WCML 4.5.2 mới nhất, bạn có thể gặp sự cố trong đó nhiều trường postmeta như “_price” được chèn vào sản phẩm biến thể đã dịch khi cập nhật.

Do đó, bạn có thể có một sản phẩm biến thể hiển thị giá không chính xác chẳng hạn – với giá trị trước khi cập nhật sản phẩm biến thể đó.

Các nhà phát triển của chúng tôi đang tiến hành khắc phục vấn đề này.

Giải pháp tạm thời

Trong wp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-synchronize-variations-data.php
Thay đổi từ:

		// Loop over the delated fields to clasify them by the field status:
		// - if the meta key exists for its variation ID, it is set to update.
		// - otherwise, it is set to insert.
		$delayedFieldsActions = [];
		foreach ( $delayedFields as $delayedFieldData ) {
			$fieldPostId                                         = $delayedFieldData['post_id'];
			$fieldMetaKey                                        = $delayedFieldData['meta_key'];
			$fieldMetaValue                                      = $delayedFieldData['meta_value'];
			$delayedFieldsActions[ $fieldMetaKey ]['meta_value'] = $fieldMetaValue;
			$metaDataByVariationId                               = Obj::propOr( [], $fieldPostId, $metaDataByVariationId );
			if ( in_array( $fieldMetaKey, $metaDataByVariationId, true ) ) {
				$delayedFieldsActions[ $fieldMetaKey ]['update'][ $fieldMetaValue ][ $fieldPostId ] = $fieldPostId;
			} else {
				$delayedFieldsActions[ $fieldMetaKey ]['insert'][ $fieldPostId ] = $fieldMetaValue;
			}
		}

thành

		// Loop over the delated fields to clasify them by the field status:
		// - if the meta key exists for its variation ID, it is set to update.
		// - otherwise, it is set to insert.
		$delayedFieldsActions = [];
		foreach ( $delayedFields as $delayedFieldData ) {
			$fieldPostId                                         = $delayedFieldData['post_id'];
			$fieldMetaKey                                        = $delayedFieldData['meta_key'];
			$fieldMetaValue                                      = $delayedFieldData['meta_value'];
			$delayedFieldsActions[ $fieldMetaKey ]['meta_value'] = $fieldMetaValue;
			$metaDataByPostId                               = Obj::propOr( [], $fieldPostId, $metaDataByVariationId );
			if ( in_array( $fieldMetaKey, $metaDataByPostId, true ) ) {
				$delayedFieldsActions[ $fieldMetaKey ]['update'][ $fieldMetaValue ][ $fieldPostId ] = $fieldPostId;
			} else {
				$delayedFieldsActions[ $fieldMetaKey ]['insert'][ $fieldPostId ] = $fieldMetaValue;
			}
		}

Tất cả các lỗi đã ghi nhận →