Woocommerce | Wordpress - WC_Cart :: set_quantity -

时间:2016-03-24 16:20:36

标签: php wordpress woocommerce

我正在开发一个电子商务网站。 我正在尝试使用ajax请求设置购物车项目数量。

我得到了这个

if (isset($_POST['product_id']) && isset($_POST['new_quantity'])) {
   global $woocommerce;
   $woocommerce->cart->set_quantity($_POST['product_id'], $_POST['new_quantity']);
}

我也试过

WC()->....

但它不起作用并抛出此错误

  

在null中调用成员函数needs_shipping()        在 1514

C:\ xampp \ htdocs \ findandcandy \ wp-content \ plugins \ woocommerce \ includes \ class-wc-cart.php

导致这种情况发生的原因是什么?

如果您需要我显示更多代码,请告诉我。 感谢

2 个答案:

答案 0 :(得分:0)

我在第1514行添加了if(is_object($_product)),它解决了我的问题。

答案 1 :(得分:0)

好的,您现在可以更新购物车商品的数量而无需通过AJAX刷新(:

我的functions.php看起来像这样

jQuery( function( $ ) {

    $( document ).on( 'change', 'input.qty', function() {

        var item_hash = $( this ).attr( 'name' ).replace(/cart\[([\w]+)\]\[qty\]/g, "$1");
        var item_quantity = $( this ).val();
        var currentVal = parseFloat(item_quantity);

        function qty_cart() {

            $.ajax({
                type: 'POST',
                url: cart_qty_ajax.ajax_url,
                data: {
                    action: 'qty_cart',
                    hash: item_hash,
                    quantity: currentVal
                },
                success: function(data) {
                    $( '.view-cart-popup' ).html(data);
                }
            });  

        }

        qty_cart();

    });

});

我的购物车-qty-ajax.js看起来像这样。

{{1}}