我正在尝试为拥有帐户的用户延长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' );
我还没有测试过这个。它可能不起作用,并且可能会有副作用。