如何在 WordPress 中显示用户的上次登录日期(2 种简单方法)

3,280字
14–21 分钟
in
Bug编译狮

Bug编译狮

要在 WordPress 中显示用户的上次登录日期,有两种简单的方法:使用插件和通过修改核心文件。下面是每种方法的详细步骤以及示例代码。

方法 1: 使用插件

步骤 1: 寻找合适的插件

首先,在 WordPress 的插件库中搜索“用户活动”或类似的标签。找到一个信誉良好的插件,如 “WP User Activity” 或 “User Login Log”。

步骤 2: 安装并激活插件

  • 登录到您的 WordPress 管理面板。
  • 进入插件页面。
  • 找到并点击安装按钮下载插件。
  • 激活该插件。

步骤 3: 查看上次登录日期

一旦插件安装并激活后,您可以在后台看到最近的用户登录日志。通常,这些信息会显示在活动栏或者用户管理界面的某个位置。

示例代码

假设我们选择的是 “WP User Activity” 插件。以下是如何查看插件提供的用户最后一次登录日期:

<?php
// 获取用户最后一次登录的时间戳
$last_login = get_last_activity_time();

// 将时间戳转换为人类可读的形式
$user_last_login = human_time_diff($last_login);

// 输出最后登录日期
echo '用户最后一次登录于:' . $user_last_login;
?>

这段代码的作用是获取当前用户最后一次登录的时间戳,并将其转换为易于理解的人类可读格式(例如,“3天前”),然后输出这个信息。

方法 2: 直接修改核心文件

如果你不介意直接修改 WordPress 核心文件,你可以这样做来记录用户的登录时间和访问次数。

步骤 1: 备份核心文件

在修改任何核心文件之前,请确保备份它们。这可以防止意外的数据丢失。

步骤 2: 修改 wp-includes/class-wp-user.php 文件

找到 wp-includes/class-wp-user.php 文件中的相关部分,可能类似于下面的代码:

function user_last_login() {
    return $this->usermeta['login'] ? strtotime($this->usermeta['login']) : false;
}

在这个函数中,$this->usermeta['login'] 是存储用户最后一次登录时间的字段名。

步骤 3: 添加新的数据字段

为了记录用户的访问次数,你需要添加一个新的字段到 wp_usermeta 表。编辑数据库表 wp_userswp_usermeta,添加新字段:

ALTER TABLE wp_users ADD COLUMN last_access INT(10) NOT NULL DEFAULT 0 AFTER login_date;
ALTER TABLE wp_usermeta ADD COLUMN access_count INT(10) NOT NULL DEFAULT 0 AFTER meta_id;

步骤 4: 更新 user_last_login 函数

更新 user_last_login 函数以考虑新字段:

function user_last_login() {
    global $wpdb;

    // 如果没有登录时间,则返回假值
    if (empty($this->usermeta['login'])) {
        return false;
    }

    // 查询用户最后一次登录的时间
    $last_login = $wpdb->get_var("SELECT MAX(access_time) FROM {$wpdb->prefix}access_log WHERE user_id = {$this->ID}");

    // 如果有访问记录,则更新 last_access 字段
    if ($last_login && !empty($last_login)) {
        $this->update_meta('last_access', $last_login);
    } else {
        $this->update_meta('last_access', time());
    }

    // 返回最后一次登录时间
    return strtotime($this->usermeta['login']);
}

步骤 5: 记录访问次数

在每次用户访问时增加 access_count 字段:

function update_access_count() {
    global $wpdb;

    // 获取用户 ID
    $id = $this->ID;

    // 更新访问计数
    $wpdb->query("UPDATE {$wpdb->prefix}users SET access_count = access_count + 1 WHERE id = {$id}");
}

add_action('wp_new_user_profile', array(&$this, 'update_access_count'));
add_action('user_register', array(&$this, 'update_access_count'));

步骤 6: 测试更改

保存所有更改后,测试是否正确地记录了用户的最后一次登录时间和访问次数。

这种方法提供了更深入的控制权,但请谨慎操作,以免影响系统的正常运行。

总结

以上两种方法都可以帮助你在 WordPress 中显示用户的上次登录日期。选择哪种方法取决于你的需求和对代码的理解程度。对于大多数用户来说,使用插件可能是最简单快捷的选择。

目录
黑板前的Bug语法讲师

黑板前的Bug语法讲师

1. 使用 wp_usermetadate_format 显示用户最后一次登录日期

方法一:使用 wp_usermeta 显示

  • 原理:通过 wp_usermeta 获取用户信息,然后根据需要设置格式化日期。
  • 示例代码
function show_last_login_date() {
    $user_id = get_current_user_id(); // 获取当前用户ID
    $last_login_date = wp_get_user_meta($user_id, 'last_login', true); // 获取用户最后一次登录日期
    if (!empty($last_login_date)) { // 检查是否有最后一次登录日期
        echo date('Y-m-d H:i:s', strtotime($last_login_date)); // 输出日期和时间格式
    }
}
add_action('admin_head', 'show_last_login_date');

示例输出:

如果用户最后一次登录是在 2023 年 10 月 1 日下午 4:56,那么输出将是:

2023-10-01 16:56:00

2. 使用 get_the_author_metadate_format 显示

  • 原理:同样通过 get_the_author_meta 获取用户信息,但这里不直接设置 last_login,而是通过 get_the_author_meta 获取用户最后更新的时间戳,再利用 date_format 来显示日期和时间。

方法二:使用 get_the_author_meta 显示

  • 示例代码
function display_last_login_date() {
    $author_id = get_the_author_meta('ID'); // 获取文章作者ID
    $last_update_time = get_the_author_meta('last_updated', $author_id); // 获取文章最后更新时间戳
    if ($last_update_time) {
        echo date('Y-m-d H:i:s', $last_update_time);
    } else {
        echo "无上次登录日期";
    }
}
add_action('wp_head', 'display_last_login_date');

示例输出:

如果文章的最后更新时间戳为 2023-10-01 16:56:00,那么输出将是:

2023-10-01 16:56:00

注意事项:

  • 在实际应用中,请确保获取到的是有效的用户数据。
  • 如果用户没有修改过最后更新时间或最后一次登录日期,这些值可能为空。

这两个示例展示了如何在WordPress中显示用户最后一次登录日期的不同方式。希望这能帮助您更好地了解如何处理此问题。如果您有任何其他问题或需要进一步的帮助,请随时提问!