我使用woocommerce_before_calculate_totals在woocommerce增加额外的价格。如果您在购物车中添加了一个产品并选择了价格,那么总价格在结帐时是正确的,但是如果客户在相同的过程中创建了他的帐户并进行了结账,那么在完成付款后,这个价格会增加两次。这是我的密码
function calculate_gift_wrap_fee( $cart_object ) {
$additionalPrice = 100;
foreach ( $cart_object->cart_contents as $key => $value ) {
if( isset( $value["gift_wrap_fee"] ) ) {
$orgPrice = floatval( $value['data']->price );
$value['data']->price = ( $orgPrice + $additionalPrice );
}
}
}请帮帮忙
发布于 2016-05-23 15:56:05
如果客户在结帐时选择Create Account选项,woocommerce将第二次调用calculate_totals() (在注册客户帐户并自动记录它们之后),以便重新计算购物车总数,以显示注册前不可用的任何基于角色的折扣。
因此,您可以做的是检查"reload_checkout"会话,该会话将在第二次调用calculate_totals()之前设置。
所以像这样更新你的calculate_gift_wrap_fee
function calculate_gift_wrap_fee( $cart_object ) {
if( !WC()->session->__isset( "reload_checkout" )) {
/* Gift wrap price */
$additionalPrice = 100;
foreach ( $cart_object->cart_contents as $key => $value ) {
if( isset( $value["gift_wrap_fee"] ) ) {
$orgPrice = floatval( $value['data']->price );
$value['data']->price = ( $orgPrice + $additionalPrice );
}
}
}
}
add_action( 'woocommerce_before_calculate_totals', 'calculate_gift_wrap_fee', 99 );https://stackoverflow.com/questions/37393175
复制相似问题