我正在开发一个 woocommerce 小部件,它将显示购物车小计、购物车总计、购物车商品和运输总计,其工作正常,但我想要做的是每当我在运输方式之间切换时更新运输总计和购物车总计使用ajax。目前它仅在页面重新加载后自行更新。是否有任何钩子(Hook)可用于此目的?
最佳答案
您可以使用 add_to_cart_fragments
过滤器来执行此操作。
我的实现仅更新使用 AJAX 显示的项目数,但它也可用于更新总数等。这是模板中显示购物车详细信息的正常代码:
<a class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>">
(<?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count); ?>)</a>
这是在functions.php
中添加的过滤器:
// Update items in cart via AJAX
add_filter('add_to_cart_fragments', 'woo_add_to_cart_ajax');
function woo_add_to_cart_ajax( $fragments ) {
global $woocommerce;
ob_start();
?>
<a class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>">(<?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count); ?>)</a>
<?php
$fragments['a.cart-contents'] = ob_get_clean();
return $fragments;
}
肯定有一些关于这方面的资源/文档 - 我记得在编写这段代码时使用了一些资源/文档,但它们很难通过谷歌搜索。
关于php - 在 Woocommerce 中使用 ajax 更新购物车小部件中的详细信息,无需加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16337057/