自定义woocommerce购物车AJAX更新

时间:2016-09-13 09:09:14

标签: php ajax wordpress woocommerce

我正在尝试AJAX化我的Woocommerce购物车,但我很难,我真的无法找到任何帮助或文档(我搜索了几天)。所以任何帮助都是非常感激的。

我尝试了两种方法:

  1. 自定义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)); }
    
  2. 回显的JSON字符串包含购物车中正确数量的商品,但总金额为0.当我重新加载页面时,不会保存更改的数量。 与

    相同
    WC()->cart->add_to_cart($product_id, $quantity) or adding WC()->cart->calculate_totals()
    

    我试过这种方式,所以我可以格式化我需要的值来更新我的购物车我想要的方式。 为了让购物车更新保存,我在这里缺少什么?

    1. woocommerce内置AJAX更新功能不会触发,因为我有一个自定义设计,我认为它需要一个特定的HTML结构才能正常工作但我找不到任何文档或例子。另外,我需要以自定义格式更新的值(总金额,总计数等)。到目前为止,它只是通过我"更新的片段"作为预定义的HTML代码。 我如何构建我的cart.php的HTML代码,ajax更新将起作用?我如何改变返回值?
    2. 非常感谢您提前。

2 个答案:

答案 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;
}

注意:您正在替换而不是添加