WPML
Estado
Resuelto
Notificado para
WPML Multilingual & Multicurrency for WooCommerce 5.1.2
Resuelto en
WCML 5.2.0
Etiquetas de temática
Bug

Resumen del problema

Si un cliente realiza un pedido en un idioma secundario que contiene un producto variable de WooCommerce, el ID del producto original y el ID del producto variable traducido se muestran en el pedido. En su lugar, solo deberían mostrarse los ID de los productos originales.

Solución alternativa

Por favor, haga una copia de seguridad completa de su sitio antes de continuar.


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

  2. Busque la línea 191.

  3. Reemplace:
    	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 los problemas conocidos →