Roh*_*air 2 php ajax wordpress jquery woocommerce
我正在为wordpress创建定制的woocommerce集成主题。
我在顶部有一个Blob,用于显示购物车中的商品总数,我想使用Jquery更新此Blob(不重新加载页面),我能够通过获取当前商品中的商品数量来增加商品数量blob,并为每次点击将其增加+1,问题是“添加到购物车”具有一个选项,可以选择要添加到购物车的商品数量。因此,如果我选择3个项目并单击按钮,则斑点仅增加1。
我可以创建一种方法来获取从前端添加的项目数,但我认为这是不必要的。我希望能够使用jquery从PHP会话中获取总数,以便每次单击添加项或删除项时,我都会从服务器动态获取当前数。
到目前为止,我要做的就是创建一个reloadCart.php文件,该文件回显购物车总数,这是代码
<?php
require('../../../wp-blog-header.php');
global $woocommerce;
echo $woocommerce->cart->get_cart_contents_count();
?>
Run Code Online (Sandbox Code Playgroud)
当我访问此页面时,它回显当前项目的总计,但是我无法从jquery中获取此数据,自从我上次使用AJAX以来已经有一段时间了,而且我很长时间都没有从事Web项目的工作,但是根据我的记忆,我正在进行的AJAX呼叫是正确的。
我试过使用jquery的get()和post()函数以及普通的ajax()函数,但是似乎没有任何效果。有人可以帮忙吗?
$(".ajax_add_to_cart").click(function () {
/*$("#bag-total").html(function () {
var bagTotal = parseInt($(this).html());
return ++bagTotal;
});*/
alert('clicked');
$.get("<?php echo get_template_directory_uri(); ?>/reloadCart.php", function(data){
alert("Data: " + data);
});
});
Run Code Online (Sandbox Code Playgroud)
注释的行是我以前使用的行,通过从前端获取当前的购物车编号来添加购物车总计。
任何帮助,将不胜感激。提前致谢!
您不应该使用任何重新加载来更新购物车中的内容计数…而是应该使用Ajax支持的专用woocommerce_add_to_cart_fragments动作挂钩。
1)要刷新的HTML:因此,首先应在主题header.php文件中将购物车计数嵌入具有定义的唯一ID(或类)的特定html标签中,例如:
?>
<div id="mini-cart-count"></div>
<?php
Run Code Online (Sandbox Code Playgroud)
要么:
echo '<div id="mini-cart-count"></div>';
Run Code Online (Sandbox Code Playgroud)
2)代码:
add_filter( 'woocommerce_add_to_cart_fragments', 'wc_refresh_mini_cart_count');
function wc_refresh_mini_cart_count($fragments){
ob_start();
?>
<div id="mini-cart-count">
<?php echo WC()->cart->get_cart_contents_count(); ?>
</div>
<?php
$fragments['#mini-cart-count'] = ob_get_clean();
return $fragments;
}
Run Code Online (Sandbox Code Playgroud)
如果您在html标记中使用类,则将替换['#mini-cart-count']为['.mini-cart-count']。该挂钩也用于刷新迷你购物车中的内容。
代码在您的活动子主题(或主题)的function.php文件中,或者在任何插件文件中。
由于几年以来
global $woocommerce;+$woocommerce->cart已过时,取而代之的WC()->cart是访问WooCommerce购物车对象。
如果需要jQuery强制刷新该计数,则可以尝试wc_fragment_refresh或wc_fragments_refreshed委派事件,例如:
$(document.body).trigger('wc_fragment_refresh');
Run Code Online (Sandbox Code Playgroud)
要么:
$(document.body).trigger('wc_fragments_refreshed');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7354 次 |
| 最近记录: |