首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下单时WooCommerce未保存add_fee

下单时WooCommerce未保存add_fee
EN

Stack Overflow用户
提问于 2014-12-12 08:46:14
回答 2查看 1.2K关注 0票数 1

我正在努力做到这一点,当我在结账时从下拉框中选择时,将添加一笔费用。我有一个ajax请求,它返回带有在中计算的费用的信息,它还会更新当前的结帐页面。但是一旦我下了订单,手续费就没了。在ajax请求后添加费用的正确方式是什么?

我的ajax请求:

代码语言:javascript
复制
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'
            });

和我的插件函数

代码语言:javascript
复制
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' );
    }
}
EN

回答 2

Stack Overflow用户

发布于 2014-12-14 02:50:00

我有一个类似的代码运行在我的一个插件,增加了结帐费用。您的代码似乎执行得很好。我删除了$_POST‘’add_ order _fee‘条件&它在结账页面和下单页面上添加了费用。

我注意到一件事:

代码语言:javascript
复制
$('body').trigger('updated_checkout');

我在我的插件中使用:

代码语言:javascript
复制
jQuery("body").trigger("update_checkout");

注意代码中的'update_checkout‘v/s 'updated_checkout’。也许这可能是导致问题的原因。

票数 0
EN

Stack Overflow用户

发布于 2015-09-25 22:23:59

我已经有了类似的问题。当你发送第一个ajax时,系统会添加费用,而第二个ajax通过调用"update_checkout“将不会添加费用,因为没有$_POST。所以我的解决方案是将WC费用添加到会话中,并在"update_checkout“调用时添加它。这是我在插件中使用的代码:

代码语言:javascript
复制
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。

代码语言:javascript
复制
add_action('init', array($this,'register_my_session'));
function register_my_session()
    {
        if( !session_id() )
        {
            session_start();
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27435138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档