调整WooCommerce加入购物车代码以实现触发后停留在当前页面
解决WooCommerce添加购物车后跳转首页的问题
我来帮你搞定这个困扰!你现在用的直接链接方式会触发WooCommerce默认的GET请求跳转,所以总是回到首页。下面给你两种靠谱的解决方案:
方法1:利用WooCommerce自带的重定向参数
只需要给你的添加购物车链接加上&redirect_to参数,指定跳转回当前页面就行。你可以用PHP动态获取当前页面的URL,这样不管在哪个页面都能生效:
<a href="/?add-to-cart=25&quantity=3&redirect_to=<?php echo urlencode(get_permalink()); ?>">Add to Cart</a>
原理很简单:这个参数会告诉WooCommerce,完成添加购物车操作后,跳转到redirect_to指定的页面(也就是当前页面),而不是默认的首页。
方法2:无刷新AJAX添加(更推荐)
如果想要更流畅的用户体验,完全避免页面跳转,那用AJAX实现是最佳选择。步骤如下:
1. 修改HTML链接
给链接加一个自定义类,方便JS识别:
<a href="/?add-to-cart=25&quantity=3" class="ajax-add-to-cart">Add to Cart</a>
2. 添加JS代码监听点击
把这段代码放到你的主题functions.php里(用wp_enqueue_script加载),或者直接放到主题的自定义JS文件中:
jQuery(document).ready(function($) { // 监听自定义类的链接点击 $('body').on('click', '.ajax-add-to-cart', function(e) { e.preventDefault(); // 阻止默认的页面跳转行为 var addToCartUrl = $(this).attr('href'); // 发送AJAX请求添加商品到购物车 $.get(addToCartUrl, function(response) { // 显示成功提示(可以根据你的主题样式调整) $('.woocommerce-message').remove(); $('body').prepend('<div class="woocommerce-message" role="alert">商品已成功加入购物车!</div>'); // 刷新购物车图标(如果你的主题有购物车数量显示) $.get('/?wc-ajax=get_refreshed_fragments', function(fragments) { if (fragments && fragments['.cart-contents']) { $('.cart-contents').replaceWith(fragments['.cart-contents']); } }); }); }); });
这种方式不仅不会跳转页面,还能实时更新购物车的数量显示,用户体验拉满!
额外检查项
别忘了去WooCommerce后台确认一下设置:进入WooCommerce → 设置 → 产品 → 常规,看看“添加到购物车行为”里有没有勾选“添加后重定向到购物车页面”,如果有的话取消勾选(不过你的情况是跳首页,大概率不是这个问题,但检查一下更稳妥)。
内容的提问来源于stack exchange,提问作者user3593556
相关产品推荐
相关产品推荐

