- สถานะ
- แก้ไขแล้ว
- รายงานสำหรับ
- WPML Multilingual & Multicurrency for WooCommerce 5.5.2
- แก้ไขใน
- WPML Multilingual & Multicurrency for WooCommerce 5.5.3
- แท็กหัวข้อ
- Bug
ภาพรวมของปัญหา
คุณอาจพบปัญหาในการอัปเดตโพสต์หรือการแปลที่มี GTIN, UPC, EAN หรือ ISBN ระบุไว้ในผลิตภัณฑ์ WooCommerce และจะมีข้อความแจ้งว่า:
GTIN, UPC, EAN หรือ ISBN ไม่ถูกต้องหรือซ้ำกัน
วิธีแก้ปัญหาชั่วคราว
นักพัฒนาของเรากำลังดำเนินการในเรื่องนี้ และจะมีการออกตัวแก้ไขในเร็ว ๆ นี้
อย่างไรก็ตาม หากคุณไม่สามารถรอการแก้ไขนี้ได้ โปรดตรวจสอบให้แน่ใจว่าคุณได้สำรองข้อมูลไว้แล้ว
ไปที่: /wp-content/plugins/woocommerce-multilingual/inc/class-wcml-products.php
เพิ่มที่ด้านล่างของ:
add_filter( 'wc_product_has_unique_sku', [ $this, 'check_product_sku' ], 10, 3 );
โค้ดนี้:
add_filter( 'wc_product_has_global_unique_id', [ $this, 'check_product_gtin' ], 10, 3 );
ที่ด้านล่างของไฟล์ให้เพิ่ม:
public function check_product_gtin( $sku_found, $product_id, $sku ) {
if ( null === $this->post_translations ) {
$sku_found;
}
if ( $sku_found ) {
$product_trid = $this->post_translations->get_element_trid( $product_id );
$products = $this->wpdb->get_results(
$this->wpdb->prepare(
"
SELECT p.ID
FROM {$this->wpdb->posts} as p
LEFT JOIN {$this->wpdb->postmeta} as pm ON ( p.ID = pm.post_id )
WHERE p.post_type IN ( 'product', 'product_variation' )
AND p.post_status = 'publish'
AND pm.meta_key = '_global_unique_id' AND pm.meta_value = '%s'
",
wp_slash( $sku )
)
);
$sku_found = null;
foreach ( (array) $products as $product ) {
$trid = $this->post_translations->get_element_trid( $product->ID );
if ( $product_trid !== $trid ) {
$sku_found = true;
break;
}
}
}
return $sku_found;
}