WordPress:管理画面のユーザー一覧ページに各ユーザーの最終ログイン日時を表示する方法

WordPress:管理画面のユーザー一覧ページに各ユーザーの最終ログイン日時を表示する方法

WordPressで管理画面のユーザー一覧ページに、各ユーザーが最後にログインまたは自身のプロフィールページを表示した日時を表示させる方法です。

ユーザー一覧ページに「最終ログイン」項目を追加

実装後はイメージの一番右のように「最終ログイン」という項目が追加され、表示されているのは各ユーザーが最後にログインまたは自身のプロフィールページを表示した日時になります。
また、一度もログインしていないユーザーの場合は、該当箇所に「-」と表示されます。

実装にはfunctions.phpに下記のように記述します。
ひとつ目のフックでログイン時、ふたつ目のフックで自身のプロフィールページ表示時にそれぞれタイムスタンプを保存(上書き)し、コード下部ではそのタイムスタンプ情報を利用してユーザー一覧ページに各ユーザーが最後にログインした日時を表示しています。

functions.php

add_action( 'wp_login', 'add_user_login_time', 10, 2 );
function add_user_login_time( $user_login, $user ) {
  update_user_meta( $user->ID, 'last_login_time', time() );
}

add_action( 'load-profile.php', 'update_user_login_time' );
function update_user_login_time() {
  global $current_user;
  update_user_meta( $current_user->ID, 'last_login_time', time() );
}

add_filter( 'manage_users_columns', 'add_user_last_login_time_column' );
add_filter( 'manage_users_custom_column', 'custom_user_last_login_time_column', 10, 3 );
function add_user_last_login_time_column( $columns ) {
  $columns['last_login_time'] = '最終ログイン';
  return $columns;
}
function custom_user_last_login_time_column( $output, $column_name, $user_id ) {
  if ( $column_name == 'last_login_time' ) {
    $last_login_time = get_user_meta( $user_id, 'last_login_time', true );
    $output = ( $last_login_time ) ? date( 'Y-m-d H:i', $last_login_time )  : '-';
  }
  return $output;
}

上記ではログイン成功時とプロフィールページ表示時のタイミングのみタイムスタンプの保存(上書き)を行っていますが、その他のページ表示時でも行いたい場合は、update_user_login_time()を該当のページで実行されるようにすれば可能です。


WordPressで管理画面に関するその他のカスタマイズは以下にまとめているので、興味ある方はこちらもご覧ください。

Close the search window,
please press close button or esc key.