以编程方式添加到购物车时自动“刷新”woocommerce的购物车

时间:2014-11-18 15:40:45

标签: javascript php wordpress woocommerce

我在wordpress中使用woocommerce。

我使用以下内容在我的某个页面中显示购物车:

 <div id="shopping-cart"><?php echo do_shortcode('[woocommerce_cart]');?></div>

当用户使用此代码点击按钮时,我正在使用我自己的功能将产品添加到此购物车:

 function addToCart(p_id){
     alert("Adding to cart:"+p_id);
      jQuery.get('/wordpress/?post_type=product&add-to-cart=' + p_id, function(response) {
             // call back
             alert(response);
          });

         //jQuery("#shopping-cart").append("[woocommerce_cart]"); 
           alert("Added to cart:"+p_id);
    }

我通过以下代码调用此JavaScript:

 <button type="button" onclick="return addToCart(18);">Add to cart</button>

代码有效,但在ajax请求完成后,使用do_shortcode创建的购物车不会更新。

有人可以告诉我如何在get请求完成后自动更新购物车吗?

3 个答案:

答案 0 :(得分:1)

Documentation救援:)

// Ensure cart contents update when products are added to the cart via AJAX (place the following in functions.php)
add_filter('add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment');

function woocommerce_header_add_to_cart_fragment( $fragments ) {
    global $woocommerce;
    ob_start();
?>
<a class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>" title="<?php _e('View your shopping cart', 'woothemes'); ?>"><?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?> - <?php echo $woocommerce->cart->get_cart_total(); ?></a>
<?php
    $fragments['a.cart-contents'] = ob_get_clean();
    return $fragments;
}

您可能需要调整HTML以适合您的设计。

答案 1 :(得分:0)

尝试在添加到购物车警报后添加此代码...

location.reload(); 

答案 2 :(得分:0)

最后我创建了一个Ajax调用,它调用了一个PHP函数,它返回调用do_shortcode('[woocommerce_cart]')的结果;然后我在清空后简单地将它放入同一个div中 - 效果很好:)

我不得不通过woocommerce使用Ajax来实际在PHP中调用do_shortcode,以便按以下方式成功运行:

http://codex.wordpress.org/AJAX_in_Plugins