我正在尝试建立一个网站,我正在努力使用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,则返回原始总数。
我对此感到困惑,对此问题的任何帮助都会有很大用处。
答案 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