我正在尝试AJAX化我的Woocommerce购物车,但我很难,我真的无法找到任何帮助或文档(我搜索了几天)。所以任何帮助都是非常感激的。
我尝试了两种方法:
自定义AJAX功能 更改数量时(在购物车页面上),会触发一个AJAX调用( - > admin-ajax.php),它会在我的functions.php中触发一个函数:
function setQty() {
global $woocommerce;
WC()->cart->set_quantity( $_POST['itemKey'], $_POST['quantity'], true);
echo json_encode(array('totalCount'=>WC()->cart->get_cart_contents_count(), 'total'=>$woocommerce->cart->total)); }
回显的JSON字符串包含购物车中正确数量的商品,但总金额为0.当我重新加载页面时,不会保存更改的数量。 与
相同WC()->cart->add_to_cart($product_id, $quantity) or adding WC()->cart->calculate_totals()
我试过这种方式,所以我可以格式化我需要的值来更新我的购物车我想要的方式。 为了让购物车更新保存,我在这里缺少什么?
非常感谢您提前。
答案 0 :(得分:2)
是您要创建的迷你购物车/柜台还是整页以查看/移除产品?
如果它是您想要的迷你购物车/购物车柜台,我已经为https://github.com/samisonline/ajax_cart创建了一个具有基本功能的回购。这可能不是您的确切格式&#39 ;重新寻找,但它显示了工作中的woocommerce功能,以及AJAX工作所需的标记!
答案 1 :(得分:1)
我不确定您要更新的内容,但我想您想更新一揽子产品的总数量。
此示例替换并更新HTML
假设您有一个div,其总金额在:
<div class="cart-totals"><?php echo WC()->cart->get_cart_contents_count(); ?></div>
将此添加到您的functions.php:
// Mini Cart update with AJAX
add_filter( 'woocommerce_add_to_cart_fragments', 'custom_cart_count_fragments', 10, 1 );
function custom_cart_count_fragments( $fragments ) {
$fragments['div.cart-totals'] = '<div class="cart-totals">' . WC()->cart->get_cart_contents_count() . '</div>';
return $fragments;
}
注意:您正在替换而不是添加