我正在尝试为拥有帐户的用户延长WooCommerce购物车的使用寿命。我发现(并尝试过)的建议解决方案涉及延长会话有效期。
Woocommerce Set Cart Expiration Interval
但是,这不是我追求的目标。我希望会话过期保持不变,但是下次用户登录时,我希望他们的购物车最多保留六个月。
有人可以指出我正确的方向吗?
答案 0 :(得分:0)
会话期满和购物车期满链接在一起:它们都使用相同的内部变量(类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' );
我尚未对此进行测试。它可能无法正常工作,并且可能会有副作用。