我试图从购物车总数中删除运费,我已经在购物车和结帐页面上使用了下面的代码。
但是,在订单确认页面上,并未删除发货。
处理购物车和结账
add_action( 'woocommerce_after_calculate_totals', 'woocommerce_after_calculate_totals', 110 );
function woocommerce_after_calculate_totals( $cart ) {
// make magic happen here...
// use $cart object to set or calculate anything.
## Get The shipping totals
$shipping = WC()->cart->get_shipping_total();
$totalincshipping = $cart->total;
$cart->total = $totalincshipping-$shipping;
}
我在订单确认页面尝试了以下操作,但没有给予所需的结果:
add_action( 'woocommerce_checkout_create_order', 'change_total_on_checking', 100, 2 );
function change_total_on_checking( $order ) {
// Get order total
$shipping = $order->get_shipping_total();
$total = $order->get_total();
## -- Make your checking and calculations -- ##
$new_total = $total - "10"; // <== Fake calculation
// Set the new calculated total
$order->set_total( $new_total );
}
有什么建议吗?
1条答案
按热度按时间pqwbnv8z1#
您可以只使用
woocommerce_calculated_total
filter钩子,它允许插件过滤总计,并在修改的情况下对购物车总计求和。无需进一步调整或额外代码,因为购物车总额将被保存/存储并自动用于其他页面
由于您使用的是Bayna – Deposits & Partial Payments for WooCommerce插件,这可能与我的答案相冲突,因为您使用的插件包含相同的过滤器钩子
即在\deposits-for-woocommerce\src\Cart.php文件第15行版本1.2.1中
因此,要使我的应答代码在此钩子之后运行,请将其优先级更改为100 +
在我的回答中替换
与
学分:Bossman