Wordpress 使用AJAX设置结帐数量

Wordpress 使用AJAX设置结帐数量,wordpress,woocommerce,Wordpress,Woocommerce,我正在尝试创建一个网站,使用AJAX更新购物车,而不是在WooCommerce中使用“更新购物车”按钮,但我遇到了一个问题,我不知道为什么 基本上,我有以下功能: function kino_update_quantity() { $cart = WC()->cart; $value = $_POST['quantity']; $product = $_POST['product']; $cart->set_quantity($product, $va

我正在尝试创建一个网站,使用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,它将按预期返回原始总数


我对此感到困惑,在这个问题上的任何帮助都会非常有用。

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

现在,WooCommerce购物车页面在单击update cart按钮后使用Ajax更新购物车总数,您无需担心后端,只需隐藏update cart按钮,然后使用模板重定向钩子将触发此事件的脚本排入队列,依赖jQuery并确保此脚本仅在购物车页面上加载。为此,您可以使用我的免费插件,它还有一些方便的附加选项:

要使用CSS隐藏按钮,请使用class
。button
而不是tag,以使其与所有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>";
}
add_action('wp_head','hide_update_cart_button',20);
函数隐藏\更新\购物车\按钮(){
echo“.按钮[name='update_cart']{显示:无!重要;}”;
}
在这个回答中,我展示了排队文件中的js代码应该是什么:


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

现在,WooCommerce购物车页面在单击update cart按钮后使用Ajax更新购物车总数,您无需担心后端,只需隐藏update cart按钮,然后使用模板重定向钩子将触发此事件的脚本排入队列,依赖jQuery并确保此脚本仅在购物车页面上加载。为此,您可以使用我的免费插件,它还有一些方便的附加选项:

要使用CSS隐藏按钮,请使用class
。button
而不是tag,以使其与所有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>";
}
add_action('wp_head','hide_update_cart_button',20);
函数隐藏\更新\购物车\按钮(){
echo“.按钮[name='update_cart']{显示:无!重要;}”;
}
在这个回答中,我展示了排队文件中的js代码应该是什么: