【问题标题】:How can i disable clear and wipe session data on logout woccomerce如何在注销 woocommerce 时禁用清除和擦除会话数据
【发布时间】:2014-11-03 18:33:11
【问题描述】:

我对 woocommerce 从版本 2.2.0 - 10/09/2014 添加的调整有疑问。 在此更新中,默认情况下会在注销时清除并擦除会话数据。 我不想在我的网站上发生这种情况,我想在客户登录时保存数据。例如,如果客户将商品添加到购物车然后注销。我希望他在再次烧录后将物品放入购物车。 我怎样才能禁用这个调整!!

谢谢

【问题讨论】:

    标签: php wordpress session woocommerce


    【解决方案1】:

    查看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' );
    

    【讨论】:

    • 在哪里添加此代码?我在functions.php中尝试过,但什么也没发生!
    • 就像我说的,这只是一个猜测。但我认为它需要在插件中?甚至可能是mu-function。我认为 woocommerce_loaded 钩子已经在 functions.php 加载时触发了。
    【解决方案2】:

    如果其他人想要解决这个问题,请将以下内容添加到您的主题 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' );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-28
      • 2012-06-04
      • 2018-09-24
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多