如何在不修改会话过期的情况下延长购物车的生命周期



我正在尝试为拥有帐户的用户延长WooCommerce购物车的使用寿命。我发现(并尝试(的建议解决方案涉及延长会话过期时间。

伍商务设置购物车过期间隔

但是,这不是我所追求的。我希望会话过期时间保持不变,但下次用户登录时,我希望他们的购物车最多保留六个月。

有人可以指出我正确的方向吗?

会话过期和购物车过期是链接的:它们都使用相同的内部变量(类 WC_Session_Handler 的受保护属性,$_session_expiration(。

你不能改变一个,也不能改变另一个。

从数据库中删除购物车是通过WC_Session_Handler->cleanup_sessions() 完成的。这是由函数wc_cleanup_session_data()调用的,该函数由woocommerce_cleanup_sessions操作触发。

您可以尝试删除默认操作并提供自己的操作。

remove_action( 'woocommerce_cleanup_sessions', 'wc_cleanup_session_data' );
function my_cleanup_sessions() 
{
    global $wpdb;
    $wpdb->query( $wpdb->prepare( "DELETE FROM $this->_table WHERE session_expiry < %d", time() + 180 * 24 * 60 * 60 ) );
    if ( class_exists( 'WC_Cache_Helper' ) ) {
        WC_Cache_Helper::incr_cache_prefix( WC_SESSION_CACHE_GROUP );
    }
}
add_action( 'woocommerce_cleanup_sessions', 'my_cleanup_sessions' );

我还没有测试过这个。它可能不起作用,并且可能会有副作用。

相关内容

最新更新