【发布时间】:2014-11-03 18:33:11
【问题描述】:
我对 woocommerce 从版本 2.2.0 - 10/09/2014 添加的调整有疑问。 在此更新中,默认情况下会在注销时清除并擦除会话数据。 我不想在我的网站上发生这种情况,我想在客户登录时保存数据。例如,如果客户将商品添加到购物车然后注销。我希望他在再次烧录后将物品放入购物车。 我怎样才能禁用这个调整!!
谢谢
【问题讨论】:
标签: php wordpress session woocommerce
我对 woocommerce 从版本 2.2.0 - 10/09/2014 添加的调整有疑问。 在此更新中,默认情况下会在注销时清除并擦除会话数据。 我不想在我的网站上发生这种情况,我想在客户登录时保存数据。例如,如果客户将商品添加到购物车然后注销。我希望他在再次烧录后将物品放入购物车。 我怎样才能禁用这个调整!!
谢谢
【问题讨论】:
标签: php wordpress session woocommerce
查看includes/wc-session-handler.php 中的WC_Session_Handler 类,我想我已经将其追溯到在clear_auth_cookie 钩子上运行的destroy_session 方法。因此,要禁用它,您需要从该挂钩中删除此方法。
请记住,这是完全未经测试的,因此使用风险自负:
function so_26720687_keep_session_on_logout(){
remove_action( 'clear_auth_cookie', array( WC()->session, 'destroy_session' ) );
}
add_action( 'woocommerce_loaded', 'so_26720687_keep_session_on_logout' );
【讨论】:
mu-function。我认为 woocommerce_loaded 钩子已经在 functions.php 加载时触发了。
如果其他人想要解决这个问题,请将以下内容添加到您的主题 functions.php 文件中。这将在注销时保留当前会话,包括活动购物车。
function present_keep_sessions_on_logout(){
remove_action( 'wp_logout', array( WC()->session, 'destroy_session' ) );
}
add_action( 'woocommerce_init', 'present_keep_sessions_on_logout' );
【讨论】: