【WordPress】ログインユーザーの最終アクセス日時を記録・表示する方法

【WordPress】ログインユーザーの最終アクセス日時を記録・表示する方法 WordPress

WordPressで会員制サイトや社内ポータルなどを運営する場合、各ユーザーの「最終ログイン日時(最終アクセス)」を記録し、管理画面で確認できるようにすることで、アクティブユーザーの把握や不正アクセス対策に役立ちます。

この記事では、ログイン時に自動で最終アクセス日時を保存し、管理画面のユーザー一覧に表示する方法を紹介します。

ログイン時に最終アクセス日時を記録する

まずは、ユーザーがログインしたタイミングで現在時刻を保存する処理を functions.php に記述します。

function update_last_login_time($user_login, $user) {
  update_user_meta($user->ID, 'last_login', current_time('mysql'));
}
add_action('wp_login', 'update_last_login_time', 10, 2);

current_time('mysql') を使うことで、WordPressのタイムゾーン設定に基づいた日時が保存されます。

管理画面に「最終ログイン日時」の列を追加する

続いて、管理画面のユーザー一覧に「最終ログイン日時」を表示するカラムを追加します。

// カラムの追加
function add_last_login_column($columns) {
  $columns['last_login'] = '最終ログイン';
  return $columns;
}
add_filter('manage_users_columns', 'add_last_login_column');

// カラムに値を表示
function show_last_login_column($value, $column_name, $user_id) {
  if ('last_login' === $column_name) {
    $last_login = get_user_meta($user_id, 'last_login', true);
    return $last_login ? esc_html($last_login) : '未ログイン';
  }
  return $value;
}
add_filter('manage_users_custom_column', 'show_last_login_column', 10, 3);

これで、ユーザー一覧画面に最終ログイン日時が表示されるようになります。まだログインしていないユーザーには「未ログイン」と表示されます。

プロフィール画面にも表示させる(任意)

ユーザー個別のプロフィール編集画面にも最終ログイン日時を表示したい場合は、以下を追加します。

function show_last_login_in_profile($user) {
  $last_login = get_user_meta($user->ID, 'last_login', true);
  if ($last_login) {
    echo '<h3>ログイン情報</h3>';
    echo '<table class="form-table"><tr><th>最終ログイン日時</th><td>' . esc_html($last_login) . '</td></tr></table>';
  }
}
add_action('show_user_profile', 'show_last_login_in_profile');
add_action('edit_user_profile', 'show_last_login_in_profile');

これにより、ユーザープロフィール内でもログイン履歴を確認できます。

まとめ

最終ログイン日時を記録・表示することで、ユーザーの活動状況を把握したり、長期間未ログインユーザーへの通知や削除対象の選定など、様々な活用が可能になります。

カスタム開発された会員制サイトやポータルでは、ぜひ取り入れておきたい便利なカスタマイズのひとつです。