[英]Automatically 'refreshing' the woocommerce's shopping cart when programmatically adding to a cart
我在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>
该代码可以工作,但使用a_shortcode创建的购物车在ajax请求完成后不会更新。
有人可以告诉我如何在获取请求完成后自动更新购物车吗?
救援文件 :)
// 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以适合您的设计。
尝试在“添加到购物车”警报后添加此代码...
location.reload();
最后,我创建一个Ajax调用,该调用调用了PHP函数,该函数返回了调用do_shortcode('[woocommerce_cart]');的结果。 然后我将它清空后放到同一个div中-效果很好:)
我必须通过woocommerce使用Ajax来实际获得PHP中的do_shortcode调用才能成功运行,如下所示:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.