- ステータス
- 解決済み
- 報告対象
- WPML Multilingual & Multicurrency for WooCommerce 5.3.2
- トピックタグ
- WCML
問題の概要
WooCommerceでバリエーション商品を使用しており、セカンダリ言語で行われた注文によって在庫切れになった場合、他の言語では在庫が更新されません。そのため、注文が行われた言語では「在庫切れ」と表示され、他のすべての言語では購入可能と表示されます。
回避策
- サイトのバックアップを作成します
- ファイルwp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-synchronize-product-data.phpを開きます
- 次のコード:
public function sync_stock_status_for_translations( $product_id, $status ) { if ( $this->woocommerce_wpml->products->is_original_product( $product_id ) ) { $translations = $this->post_translations->get_element_translations( $product_id, false, true ); foreach ( $translations as $translation ) { $this->woocommerce_wpml->products->update_stock_status( $translation, $status ); $this->wc_taxonomies_recount_after_stock_change( $translation ); } } }を以下に置き換えます:
public function sync_stock_status_for_translations( $product_id, $status ) { // if ( $this->woocommerce_wpml->products->is_original_product( $product_id ) ) { $translations = $this->post_translations->get_element_translations( $product_id, false, false ); foreach ( $translations as $translation ) { $this->woocommerce_wpml->products->update_stock_status( $translation, $status ); $this->wc_taxonomies_recount_after_stock_change( $translation ); } } // }