我正在努力做到这一点,当我在结账时从下拉框中选择时,将添加一笔费用。我有一个ajax请求,它返回带有在中计算的费用的信息,它还会更新当前的结帐页面。但是一旦我下了订单,手续费就没了。在ajax请求后添加费用的正确方式是什么?
我的ajax请求:
var data = {
action: 'woocommerce_update_order_review',
security: wc_checkout_params.update_order_review_nonce,
add_order_fee: '55.00',
post_data: $( 'form.checkout' ).serialize()
};
$.ajax({
type: 'POST',
url: wc_checkout_params.ajax_url,
data: data,
success: function( response ) {
if ( response ) {
var order_output = $(response);
$( '#order_review' ).html( $.trim( response ) );
$('body').trigger('updated_checkout');
console.log(response)
}
},
error: function(code){
console.log('ERROR');
},
dataType: 'html'
});和我的插件函数
add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
function woo_add_cart_fee(){
global $woocommerce;
if(isset($_POST['add_order_fee']))
{
$woocommerce->cart->add_fee( 'Same Day Shipping', '55.00', true, 'standard' );
}
}发布于 2014-12-14 02:50:00
我有一个类似的代码运行在我的一个插件,增加了结帐费用。您的代码似乎执行得很好。我删除了$_POST‘’add_ order _fee‘条件&它在结账页面和下单页面上添加了费用。
我注意到一件事:
$('body').trigger('updated_checkout');我在我的插件中使用:
jQuery("body").trigger("update_checkout");注意代码中的'update_checkout‘v/s 'updated_checkout’。也许这可能是导致问题的原因。
发布于 2015-09-25 22:23:59
我已经有了类似的问题。当你发送第一个ajax时,系统会添加费用,而第二个ajax通过调用"update_checkout“将不会添加费用,因为没有$_POST。所以我的解决方案是将WC费用添加到会话中,并在"update_checkout“调用时添加它。这是我在插件中使用的代码:
add_action( 'woocommerce_cart_calculate_fees', array($this,'calFee') );
public function calFee() {
if ( isset( $_SESSION[ $this->id . '_cart_fees' ] ) ) {
WC()->cart->fees = $_SESSION[ $this->id . '_cart_fees' ];
}
}请注意,您必须启用session_start。
add_action('init', array($this,'register_my_session'));
function register_my_session()
{
if( !session_id() )
{
session_start();
}
}https://stackoverflow.com/questions/27435138
复制相似问题