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

Tổng quan về lỗi

Bạn có thể gặp sự cố khi cập nhật một bài viết hoặc một bản dịch có chứa GTIN, UPC, EAN hoặc ISBN được điền trong sản phẩm WooCommerce và sẽ có một thông báo:

GTIN, UPC, EAN hoặc ISBN không hợp lệ hoặc bị trùng lặp.

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

Các nhà phát triển của chúng tôi đang xử lý vấn đề này và các bản sửa lỗi sẽ sớm được phát hành.

Tuy nhiên, nếu bạn không thể chờ lỗi này được khắc phục, hãy đảm bảo rằng bạn có bản sao lưu.

Truy cập: /wp-content/plugins/woocommerce-multilingual/inc/class-wcml-products.php
thêm vào bên dưới:

add_filter( 'wc_product_has_unique_sku', [ $this, 'check_product_sku' ], 10, 3 );

đoạn mã này:
add_filter( 'wc_product_has_global_unique_id', [ $this, 'check_product_gtin' ], 10, 3 );

Ở cuối tệp, thêm:
    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;
    }

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