首页 > 解决方案 > 离开woocommerce网站时如何清洁购物车

问题描述

我正在使用此代码来清洁购物车:

/ * empty cart if user come to homepage * /
add_action ('init', 'woocommerce_clear_cart_url');
function woocommerce_clear_cart_url () {
global $ woocommerce;

if ($ _SERVER ['REQUEST_URI'] === '/') {
    $ woocommerce-> cart-> empty_cart ();
 }
}

当我访问主页时它会清理,我希望每次客户关闭我的网站时都会清理它。

标签: phpwordpresswoocommerce

解决方案


一般来说,您不想在用户离开时清理购物车。如果有的话,您想保留购物车的内容以备不时之需,从而优化销售。

购物车的内容很可能与会话 ID 相关联,因此当用户会话过期时,它最终会丢失。


如果你想这样做,这里有一个可能的解决方案:
为了检测网站的“离开”,需要一些客户端代码;您不能仅使用服务器端代码来实现这一点。

也就是说,您需要使用 JavaScript 并挂钩* 事件,然后使用Beacon APIunload向服务器发送异步请求,然后服务器可以执行清理。您需要使用信标 API,因为:

与使用 XMLHttpRequest 或 Fetch API 发出的请求不同,浏览器保证在页面卸载之前启动信标请求并运行它们直到完成。

* 请注意,该unload事件并不完全可靠。有关详细信息,请参见1 。


推荐阅读