- Status
- Aberto
- Relatado para
- WPML Multilingual & Multicurrency for WooCommerce 5.5.3.1
- Plugin/tema relacionado
- WooCommerce Product Bundles
- Tags de tópico
- WCML
Visão geral do problema
Ao traduzir um produto em pacote usando o WooCommerce Multilingual e o WooCommerce Product Bundles, você pode notar que faltam todos os itens do pacote no produto traduzido. Esse problema ocorre quando há uma inconsistência no banco de dados que impede uma sincronização adequada dos dados do produto em pacote na tradução.
Solução alternativa
Por favor, certifique-se de fazer um backup completo do site antes de prosseguir.
- Abra o arquivo …/woocommerce-multilingual/compatibility/WcProductBundles/class-wcml-product-bundles.php.
- Logo após 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 ); } - Adicione isto:
$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 fim, salve novamente o produto original.