WPML
Status
Resolvido
Relatado para
WPML Multilingual & Multicurrency for WooCommerce 5.1.2
Resolvido em
WCML 5.2.0
Tags de tópico
Bug

Visão geral do problema

Se um cliente fizer um pedido em um idioma secundário contendo um produto variável do WooCommerce, o ID do produto original e o ID do produto variável traduzido são exibidos no pedido. Em vez disso, deveria exibir apenas os IDs do produto original.

Solução alternativa

Por favor, faça um backup completo do seu site antes de prosseguir.


  1. Abra o arquivo …/wp-content/plugins/woocommerce-multilingual/inc/class-wcml-orders.php.

  2. Procure a linha 191.

  3. Substitua:
    	private function adjust_product_item_if_translated( $item, $language_to_filter ) {
    
    		$product_id            = $item->get_product_id();
    		$translated_product_id = apply_filters( 'translate_object_id', $product_id, 'product', true, $language_to_filter );
    		if ( $product_id && $product_id !== $translated_product_id ) {
    			$item->set_product_id( $translated_product_id );
    			$item->set_name( get_post( $translated_product_id )->post_title );
    			return true;
    		}
    
    		return false;
    	}
    Por:
    	private function adjust_product_item_if_translated( $item, $language_to_filter ) {
    
    		$product_id            = $item->get_product_id();
    		$translated_product_id = apply_filters( 'translate_object_id', $product_id, 'product', true, $language_to_filter );
            $variation_id           = $item->get_variation_id();
            $translated_variation_id = apply_filters( 'translate_object_id', $variation_id, 'product_variation', true, $language_to_filter );
    		if ( $product_id && $product_id !== $translated_product_id ) {
    			$item->set_product_id( $translated_product_id );
    			$item->set_name( get_post( $translated_product_id )->post_title );
    			//return true;
    		}
            if ( $variation_id && $variation_id !== $translated_variation_id ) {
                $item->set_variation_id( $translated_variation_id );
                $item->set_name( get_post( $translated_variation_id )->post_title );
                //	return true;
            }
    
    		return true;
    	}

Todos os problemas conhecidos →