- Estado
- Abierto
- Notificado para
- WPML Multilingual & Multicurrency for WooCommerce 5.5.3.1
- Plugin/tema relacionado
- WooCommerce Product Bundles
- Etiquetas de temática
- WCML
Resumen del problema
Al traducir un paquete de productos usando WooCommerce Multilingual y WooCommerce Product Bundles, es posible que al producto traducido le falten todos los artículos del paquete. Este problema ocurre cuando hay una inconsistencia en la base de datos que impide la correcta sincronización de los datos del paquete de productos en la traducción.
Solución alternativa
Por favor, asegúrese de tener una copia de seguridad completa de su sitio antes de continuar.
- Abra el archivo …/woocommerce-multilingual/compatibility/WcProductBundles/class-wcml-product-bundles.php.
- Justo después de este código:
if ( ! $translated_item_id ) { $menu_order = $this->wpdb->get_var( $this->wpdb->prepare( " SELECT menu_order FROM {$this->wpdb->prefix}woocommerce_bundled_items WHERE bundle_id=%d AND product_id=%d ", $bundle_id, $product_id ) ); $this->wpdb->insert( $this->wpdb->prefix . 'woocommerce_bundled_items', [ 'product_id' => $translated_product_id, 'bundle_id' => $translated_bundle_id, 'menu_order' => $menu_order, ] ); $translated_item_id = $this->wpdb->insert_id; $this->set_translated_item_id_relationship( $item_id, $translated_item_id, $lang ); } - Añada esto:
$check = $this->wpdb->get_var( $this->wpdb->prepare( "SELECT bundled_item_id FROM {$this->wpdb->prefix}woocommerce_bundled_items WHERE bundled_item_id = %d AND bundle_id = %d", $translated_bundle_id, $translated_product_id ) ); if ( !$check ) { $menu_order = $this->wpdb->get_var( $this->wpdb->prepare( " SELECT menu_order FROM {$this->wpdb->prefix}woocommerce_bundled_items WHERE bundle_id=%d AND product_id=%d ", $bundle_id, $product_id ) ); $this->wpdb->insert( $this->wpdb->prefix . 'woocommerce_bundled_items', [ 'bundled_item_id' => $translated_item_id, 'product_id' => $translated_product_id, 'bundle_id' => $translated_bundle_id, 'menu_order' => $menu_order, ] ); } - Por último, vuelva a guardar el producto original.