- 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.
- Abra o arquivo …/wp-content/plugins/woocommerce-multilingual/inc/class-wcml-orders.php.
- Procure a linha 191.
- 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; }