登录用户的 Woocommerce 购物车会话不会过期

问题描述 投票:0回答:1

我有一个 woocommerce 网站。我需要在一段时间后过期并删除购物车物品。但对于登录用户来说,会话不会过期。

我使用以下代码来实现此目的,但它不适用于登录用户:

add_filter('wc_session_expiring', 'filter_ExtendSessionExpiring');
add_filter('wc_session_expiration' , 'filter_ExtendSessionExpired');

function filter_ExtendSessionExpiring($seconds) {
    return 60*60*24;
}
function filter_ExtendSessionExpired($seconds) {
   return 60*60*25;
}

上面的代码适用于非登录用户,但我也需要它适用于登录用户。请指教

php wordpress session woocommerce cart
1个回答
0
投票

这是因为 WooCommerce 对访客和登录用户处理购物车过期的方式不同。开箱即用,持久购物车功能已为所有登录的客户启用,并允许他们保留相同的购物车内容,即使他们使用不同的设备。

为此,插件将包含所有购物车商品的

_woocommerce_persistent_cart_BLOG_ID
参数添加到用户元数据(
wp_usermeta
表)中。您可以通过添加以下代码来禁用此功能:

add_filter('woocommerce_persistent_cart_enabled', '__return_false');

此后,您的代码将适用于所有新会话,并强制购物车在过期后清空并运行

woocommerce_cleanup_sessions
cron 作业(默认情况下,每天两次)。

© www.soinside.com 2019 - 2024. All rights reserved.