您不应该使用任何重新加载更新购物车内容计数...相反,您应该使用专用的woocommerce_add_to_cart_fragments
动作钩子就是阿贾克斯动力.
1)要刷新的HTML:所以首先在你的主题中header.php
文件中,您应该需要将购物车计数嵌入到具有定义的唯一 ID(或类)的特定 html 标记中,例如:
$items_count = WC()->cart->get_cart_contents_count();
?>
<div id="mini-cart-count"><?php echo $items_count ? $items_count : ' '; ?></div>
<?php
or:
$items_count = WC()->cart->get_cart_contents_count();
echo '<div id="mini-cart-count"><?php echo $items_count ? $items_count : ' '; ?></div>';
2)代码:
add_filter( 'woocommerce_add_to_cart_fragments', 'wc_refresh_mini_cart_count');
function wc_refresh_mini_cart_count($fragments){
ob_start();
$items_count = WC()->cart->get_cart_contents_count();
?>
<div id="mini-cart-count"><?php echo $items_count ? $items_count : ' '; ?></div>
<?php
$fragments['#mini-cart-count'] = ob_get_clean();
return $fragments;
}
如果你在 html 标签中使用类,你将替换['#mini-cart-count']
by ['.mini-cart-count']
。该钩子还用于刷新迷你购物车内容。
代码位于活动子主题(或主题)的 function.php 文件中或任何插件文件中。
几年以来global $woocommerce;
+ $woocommerce->cart
已过时并被替换WC()->cart
访问 WooCommerce 购物车对象。
如果你需要 jQuery 强制刷新该计数,你可以尝试wc_fragment_refresh
or wc_fragments_refreshed
委托事件,例如:
$(document.body).trigger('wc_fragment_refresh');
or:
$(document.body).trigger('wc_fragments_refreshed');