2015-09-03 22 views
0

一直在寻找小时的解决方案,并没有发现一个 我试着用下面的代码如何检查,当用户访问(积极)的网站上一次

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 action hook只有在用户手动登录(写入用户名和密码并单击登录)时才会触发,如果他自动登录,则不会触发它...

我试过的另一件事是此代码

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(); 
    } 
} 

但是这一次没有做的工作太... 会很greatfull有人可以提供一种方式来解决这个问题

回答

0
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); 
0

因为你所需要的时间标记每次用户访问页面(不只是当他们登录)来更新,该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); 
相关问题