使用AJAX在Checkout中设置WooCommerce数量

时间:2016-07-20 10:48:32

标签: wordpress woocommerce

我正在尝试建立一个网站,我正在努力使用AJAX更新购物车,而不必使用WooCommerce中的“更新购物车”按钮,但我遇到了一个问题,我不知道为什么?

基本上我有以下功能:

function kino_update_quantity() {
    $cart = WC()->cart;
    $value = $_POST['quantity'];
    $product = $_POST['product'];
    $cart->set_quantity($product, $value, true);
    echo json_encode($cart->total);
    wp_die();
}

我希望此功能从$ _POST变量中获取产品和数量,在此设置数量,然后返回新的总价格。

然而它总共返回0,这显然是不正确的。如果我刷新页面,但总数已全部正确更新。此外,如果我在set_quantity调用中将布尔值设置为false,则返回原始总数。

我对此感到困惑,对此问题的任何帮助都会有很大用处。

1 个答案:

答案 0 :(得分:0)

2.6.0之前。 WooCommerce,2016年6月发布,更新购物车总数比原始海报提供的复杂得多,并要求创建自定义Ajax调用。

现在,WooCommerce购物车页面在单击“更新购物车”按钮后使用Ajax来更新购物车总数,您无需担心后端,只需隐藏“更新购物车”按钮,然后使用模板使脚本排队,该脚本在数量变化时触发此事件重定向挂钩,与jQuery的依赖关系,并确保此脚本仅在购物车页面上加载。为此,您可以使用我的免费插件,该插件还有一些方便的附加选项:

Ajax Cart AutoUpdate for WooCommerce

要使用CSS隐藏按钮,请使用类.button而不是标签,以使其与所有WooCommerce版本兼容:

.button[name='update_cart'] {
    display: none!important;
}

或隐藏具有PHP样式的按钮:

add_action('wp_head', 'hide_update_cart_button', 20);
function hide_update_cart_button() {
    echo "<style>.button[name='update_cart']{ display: none!important;}</style>";
}

在这个答案中,我显示了入队文件中的js代码应该是:

How to update cart page product quantity automatically through AJAX