跟踪上次登录和上次访问

时间:2013-03-25 作者:Pat

我正在使用下面的代码跟踪用户上次登录的时间。我意识到如果他们检查Remember Me 选项,这不会跟踪他们的最后一个visit.

// Catch the time they login and save it
function set_last_login($login) {
  $user = get_userdatabylogin($login);
  update_usermeta( $user->ID, \'last_login\', current_time(\'mysql\') );
}
add_action(\'wp_login\', \'set_last_login\');

// Function to display the time
function get_last_login($user_id) {
  $last_login = get_user_meta($user_id, \'last_login\', true);
  $date_format = get_option(\'date_format\') . \' \' . get_option(\'time_format\');
  $the_last_login = mysql2date($date_format, $last_login, false);
  return $the_last_login;
}
除了上面用于跟踪登录的工作代码之外,我还想看看用户上次激活的时间if they are already logged in.

有什么建议吗?

1 个回复
最合适的回答,由SO网友:tfrommen 整理而成

您可以为用户元数据创建一个新条目,并在每次管理页面加载时更新它。

在你的主题中加入以下内容functions.php 或者将其包装成插件:

function update_last_action_time() {
    $user = wp_get_current_user();
    update_user_meta($user->ID, \'last_action_time\', current_time(\'mysql\'));
}
add_action(\'admin_init\', \'update_last_action_time\');
当然,您可以通过将其限制在某些页面(例如,仅限仪表板)来改进此功能(从而降低开销)。

// Edit: 您应该使用update_user_meta 而不是弃用的update_usermeta.

// Edit, 再一次

如果要跟踪前端的用户,请将此代码放入所需的模板中:

if (is_user_logged_in()) {
    $user = wp_get_current_user();
    update_user_meta($user->ID, \'last_action_time\', current_time(\'mysql\'));
}
再说一次,为了降低开销,我宁愿把这个not 进入footer.php 文件我宁愿home.php (如果您有),或查看特定请求(例如,您的主页,意思是:home_url() == \'http://\'.$_SERVER[\'SERVER_NAME\']). 但正如前面所说(意思如下;),当然,在中使用它时,开销是正常的footer.php.

结束

相关推荐

Redirect wp-login

我有一个名为owner login的自定义页面wp_login_form()如何禁用wp登录。php,以便:当用户写入时wp-admin/ 当用户写入时,它会将其重定向到所有者登录(如果未登录)wp-login.php 它会将他重定向到所有者登录(已登录/未登录)通常,我不想显示wp登录,但要具有所需脚本的功能