我正在创建一种发货方法,客户可以选择发货时间。可以在产品页面、购物车和结帐上进行选择。选中后,它将使用ajax更新会话值。
然而,问题是,如果时间改变,我需要重新计算购物车上的配送和结帐,但woocommerce不计算配送,除非在购物车中添加或删除项目。
如果我刷新页面,它甚至不会重新计算,我必须手动更改购物车的内容才能启动。
有什么建议吗?
我正在创建一种发货方法,客户可以选择发货时间。可以在产品页面、购物车和结帐上进行选择。选中后,它将使用ajax更新会话值。
然而,问题是,如果时间改变,我需要重新计算购物车上的配送和结帐,但woocommerce不计算配送,除非在购物车中添加或删除项目。
如果我刷新页面,它甚至不会重新计算,我必须手动更改购物车的内容才能启动。
有什么建议吗?
我在创建发货方法时也遇到了同样的问题,我所做的是在ajax调用的函数上添加一些东西,只是为了在购物车上进行更新:
global $woocommerce;
$packages = $woocommerce->cart->get_shipping_packages();
foreach( $packages as $package_key => $package ) {
$session_key = \'shipping_for_package_\'.$package_key;
$stored_rates = WC()->session->__unset( $session_key );
}
请尝试在需要的地方添加:
WC()->cart->calculate_shipping();
WC()->cart->calculate_totals();
这就是WooCommerce在自己的Ajax调用中处理它的方式。我在WC_Ajax::update_order_review()
(class-wc-ajax.php:354).