- סטטוס
- נפתר
- דווח עבור
- WPML Multilingual & Multicurrency for WooCommerce 5.4.2
- נפתר בגרסה
- WooCommerce Multilingual & Multicurrency 5.4.3
- תגיות נושא
- Bug
סקירה כללית של התקלה
בגרסת WCML 4.5.2 העדכנית, ייתכן שתיתקל בבעיות שבהן מוכנסים מספר שדות postmeta כמו “_price” למוצר הווריאציה המתורגם בעת העדכון.
כתוצאה מכך, ייתכן שיהיה לך מוצר וריאציה שמציג מחיר שגוי למשל – עם הערך שהיה לפני העדכון של אותו מוצר וריאציה.
המפתחים שלנו עובדים על תיקון לבעיה זו.
פתרון עוקף
בקובץ wp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-synchronize-variations-data.php
שנה מ:
// 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;
}
}
ל:
// 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;
}
}