【问题标题】:How to check when user visited(been active) the site last time如何检查用户上次访问(活跃)站点的时间
【发布时间】:2015-09-03 22:39:14
【问题描述】:

一直在寻找解决方案几个小时,但没有找到 我尝试使用以下代码

function user_last_login( $user_login, $user ){
update_user_meta( $user->ID, '_last_login', time() );
}
add_action( 'wp_login', 'user_last_login', 10, 2 );

但我发现 wp_login 操作挂钩仅在用户手动登录时触发(输入用户名和密码并单击登录),如果他自动登录则不会触发...

我尝试过的另一件事是这段代码

add_action('init', 'wpse_session_start', 1);
function wpse_session_start() {
   if(!session_id()) {
      update_user_meta( get_current_user_id(), '_last_login', time() );
      session_start();
    }
}

但是这个也不行…… 如果有人可以提供解决此问题的方法,那就太好了

【问题讨论】:

    标签: php wordpress


    【解决方案1】:
    function user_last_login( $user_login, $user ){
        update_user_meta( $user->ID, '_last_login', time() );
    }
    add_action( 'wp_login', 'user_last_login', 10, 2 );
    

    对于您尝试的上述功能,您必须在需要最后登录值的地方使用以下行。

    get_user_meta( $user->ID, '_last_login', true );
    

    【讨论】:

      【解决方案2】:

      由于您需要时间戳来更新每次用户访问页面(不仅仅是在他们登录时),wp_login 挂钩显然不起作用。相反,您可以连接到 init,它在每次页面加载时运行:

      // Update time stamp
      function set_user_last_active() {
          if ( is_user_logged_in() ) {
              update_user_meta( get_current_user_id(), '_last_login', time() );
          }
      }
      add_action( 'init', 'set_user_last_active' );
      

      然后您可以使用以下方法获取时间戳:

      get_user_meta( get_current_user_id(), '_last_login', true );
      

      【讨论】:

        猜你喜欢
        • 2014-09-03
        • 2022-11-01
        • 1970-01-01
        • 2023-02-24
        • 1970-01-01
        • 2021-09-16
        • 2011-12-27
        • 2012-11-26
        • 1970-01-01
        相关资源
        最近更新 更多