一応、自己解決できましたので共有させていただきます。
カートに入れたタイミングだけでなく、カート内商品を削除のタイミングでも単価の再計算の必要がありました。
ですので、usces_action_after_inCart
usces_action_after_cart_del_row
フックを用いて、get_cart()
を参考にセッションに保存されている単価を上書きできるようにしました。
以下がフックした処理です。
global $usces;
foreach( $_SESSION['usces_cart'] as $serial => $qua ) {
$row = $usces->cart->key_unserialize( $serial );
$post_id = $row['post_id'];
$sku = $row['sku'];
$price = $usces->cart->get_realprice( $post_id, $sku, $_SESSION['usces_cart'][$serial]['quant'] );
$_SESSION['usces_cart'][$serial]['price'] = $price;
}
ポイントはシリアライズされた$serial
を配列のキーとしてそのまま使用することです。
get_cart()
だとアンシリアライズされているため、使用しませんでした。
※もし解釈が間違っていたら申し訳ありません。
ただ、カート内で試しただけですので、受注リスト等で上手く処理されるかはわかりません。ご注意ください。