- Status
- Offen
- Gemeldet für
- WPML Multilingual & Multicurrency for WooCommerce 5.5.3.1
- Zugehöriges Plugin/Theme
- WooCommerce Product Bundles
- Themen-Tags
- WCML
Übersicht über das Problem
Beim Übersetzen eines gebündelten Produkts mit WooCommerce Multilingual und WooCommerce Product Bundles stellen Sie möglicherweise fest, dass beim übersetzten Produkt alle gebündelten Artikel fehlen. Dieses Problem tritt auf, wenn eine Datenbankinkonsistenz vorliegt, die eine ordnungsgemäße Synchronisierung der Daten des gebündelten Produkts in der Übersetzung verhindert.
Problemumgehung
Bitte stellen Sie sicher, dass Sie ein vollständiges Backup Ihrer Website erstellt haben, bevor Sie fortfahren.
- Öffnen Sie die Datei …/woocommerce-multilingual/compatibility/WcProductBundles/class-wcml-product-bundles.php.
- Direkt nach diesem Code:
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 ); } - Fügen Sie Folgendes hinzu:
$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, ] ); } - Speichern Sie abschließend das Originalprodukt erneut.