WordPress 用户列表增加段显示字:注册时间/最后登录时间

PHP wes 2 hours ago (2026-09-19) 5 views
📑 本文导航

WordPress 用户列表增加同时显示【注册时间】和【最后登录时间】。

WordPress 默认代码原生用户列表默认不展示注册时间和最后登录时间(注册时间只在编辑用户页才有显示),增加功能代码到functions即可:

// 记录用户最后登录时间
function record_last_login($user_login, $user) {
    update_user_meta($user->ID, 'last_login', current_time('timestamp'));
}
add_action('wp_login', 'record_last_login', 10, 2);

// 用户列表增加两列:注册时间、最后登录
function add_user_custom_columns($columns) {
    $columns['user_registered'] = '注册时间';
    $columns['last_login'] = '最后登录';
    return $columns;
}
add_filter('manage_users_columns', 'add_user_custom_columns');

// 填充自定义列数据
function show_user_custom_column_value($value, $column_name, $user_id) {
    $user = get_userdata($user_id);
    if ($column_name === 'user_registered') {
        return $user->user_registered;
    }
    if ($column_name === 'last_login') {
        $last_login = get_user_meta($user_id, 'last_login', true);
        if ($last_login) {
            return date('Y-m-d H:i:s', $last_login);
        }
        return '从未登录';
    }
    return $value;
}
add_action('manage_users_custom_column', 'show_user_custom_column_value', 10, 3);

// 支持按注册时间排序
function user_registered_column_sortable($columns) {
    $columns['user_registered'] = 'user_registered';
    return $columns;
}
add_filter('manage_users_sortable_columns', 'user_registered_column_sortable');

使用说明

  1. 放到 functions.php 或者代码片段插件(Code Snippets)里,推荐 Code Snippets,避免主题更新丢失代码
  2. 效果:用户 → 所有用户列表多出两列:注册时间、最后登录
  3. 注意点:
    • 注册时间:WP 原生数据库自带,所有老用户都能正常显示,不需要等
    • ⚠️ 最后登录:只记录代码启用之后的登录行为;之前的历史登录记录没有,会显示「从未登录」
  4. 如果时间时区不对:WP 后台【设置→常规】确认时区设置

排查小提示

  • 加完代码看不到列:右上角【选项】(屏幕选项),打开看看有没有勾选「注册时间、最后登录」这两个自定义列
  • 白屏:代码粘贴时不要带中文引号,建议用代码片段插件,出错可以一键关闭片段