- ステータス
- 未解決
- 報告対象
- WPML Multilingual & Multicurrency for WooCommerce 5.5.3.1
- 関連するプラグイン/テーマ
- WooCommerce Product Bundles
- トピックタグ
- WCML
問題の概要
WooCommerce MultilingualとWooCommerce Product Bundlesを使用してバンドル商品を翻訳する際、翻訳された商品からすべてのバンドルアイテムが欠落している場合があります。この問題は、データベースの不整合により、翻訳時にバンドル商品のデータが適切に同期されない場合に発生します。
回避策
続行する前に、必ずサイトの完全なバックアップを取得してください。
- …/woocommerce-multilingual/compatibility/WcProductBundles/class-wcml-product-bundles.php ファイルを開きます。
- 次のコードの直後に、
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 ); } - 次のコードを追加します。
$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, ] ); } - 最後に、元の商品を再保存します。