お世話になっております。
商品オプションを設定して同一SKUに対してオプションを変えてカートに入れ購入した場合に、正しく在庫が減算されないように見えます。
試した例ですがSKU01を設定し、シングルセレクトの必須タイプで「ポーク」と「チキン」を設定し、
それぞれ2個の計4個購入しようとすると2個分しか在庫が減少しませんでした。
私なりに調べて見ましたが、
wp-content\plugins\usc-e-shop\includes\product\wel-item-class.php
get_post_meta() 中の
wp_cache_get( $cache_key );
が影響を与えている様に見えます。
wp-content\plugins\usc-e-shop\functions\function.php
usces_update_sku() にて在庫数が更新された際にキャッシュも更新するか既にある場合は破棄されていないために、
wp-content\plugins\usc-e-shop\functions\filters.php
usces_action_reg_orderdata_stocks() 中のforeachにて2回ループが回った際に古い在庫数が呼ばれてしまうため最後の分の商品個数しか在庫が減少しないのではないかと思われます。
短期的な解決策として、
wp-content\plugins\usc-e-shop\includes\product\wel-item-class.php
public function get_skus( $keyflag = ‘sort’, $cache = true ) {
を
public function get_skus( $keyflag = ‘sort’, $cache = false ) {
へ変更すると正しく減少する事は確認出来ましたが、この対処が他へ影響を与えるのか分からず本番のサイトでは修正出来ておりません。
正しこの場合も本来であれば
wp-content\plugins\usc-e-shop\classes\usceshop.class.php
getItemZaikoNum()中の、
$skus = wel_get_skus( $post_id, ‘code’ );
を
$skus = wel_get_skus( $post_id, ‘code’, false );
へ変更する事が良さそうに思えますが、それには
wp-content\plugins\usc-e-shop\includes\product\wel-item-functions.php
wel_get_skus()中の、
$WelItem->get_skus( $sortkey );
を
$WelItem->get_skus( $sortkey, $cache );
としないと正しく動作しないように見えます。
ややこしいので公式な修正を待てればと思うのですがもし簡易に何か出来る事があればお教え頂ければ幸いです。
あるいはそもそも何かの勘違いで設定に不備等があるようでしたらご指摘頂ければ幸いです。
どうぞ宜しくお願い致します。
———————————————————–
WordPress のバージョン:6.0.0
Welcart のバージョン:2.6.9.2205311
PHP のバージョン:7.4.29
Welcart専用の拡張プラグインとバージョン:WCEX Auto Delivery 1.5.1
ご利用のテーマ:Welcart Panetteria
症状を確認したブラウザ:chrome
サーバー【重要】:お名前.com レンタルサーバー