确定需求
在 WooCommerce 集成 WordPress 主题中,更新标头购物车在不重新加载页面的情况下计算项目数是一个常见的挑战。 jQuery 提供了一个解决方案,但是当可以添加多个数量的商品时,就会出现问题。
利用 AJAX 检索总计数
从 PHP 动态检索购物车总数使用 jQuery 进行会话时,会创建一个 reloadCart.php 文件来回显该值:
<code class="php"><?php require('../../../wp-blog-header.php'); global $woocommerce; echo $woocommerce->cart->get_cart_contents_count(); ?></code>
AJAX 实现
但是,尝试使用 AJAX 调用此文件jQuery 的 get()、post() 或 ajax() 函数不成功。
改进的方法
WooCommerce 提供了专用的 woocommerce_add_to_cart_fragments,而不是依赖重新加载支持 Ajax 的操作挂钩。
HTML 集成
使用唯一 ID 或类将购物车计数嵌入标头中:
<code class="php">$items_count = WC()->cart->get_cart_contents_count(); ?> <div id="mini-cart-count"><?php echo $items_count ? $items_count : '&nbsp;'; ?></div> <?php
PHP 代码
在主题的 function.php 文件或插件中实现以下代码:
<code class="php">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 : '&nbsp;'; ?></div> <?php $fragments['#mini-cart-count'] = ob_get_clean(); return $fragments; }</code>
将 #mini-cart-count 替换为 .mini-cart-如果使用类则计数。
jQuery 刷新
如果需要额外的 jQuery 刷新:
<code class="php">$(document.body).trigger('wc_fragment_refresh');</code>
或
<code class="php">$(document.body).trigger('wc_fragments_refreshed');</code>
以上是如何使用 AJAX 动态更新 WooCommerce 标头购物车项目计数?的详细内容。更多信息请关注PHP中文网其他相关文章!