如何在WordPress中顯示使用者上次登入日期(使用或不使用外掛)

如何在WordPress中顯示使用者上次登入日期(使用或不使用外掛)

如果您的 WordPress 網站有很多使用者,那麼稽覈誰在真正使用網站就非常重要。例如,如果您有很多管理員,您可能希望定期削減使用者。

這時,掌握 WordPress 使用者的最後登入日期就會很有幫助。在這篇文章中,我們將啟用使用者的最後登入時間,並對其進行排序,這樣你就能看到誰有一段時間沒有登入了。

首先,我們將使用一個免費外掛來實現這一功能:

使用外掛顯示 WordPress 使用者的最後登入日期

顯示 WordPress 使用者上次登入時間的最簡單方法是使用 When Last Login 外掛。

安裝並啟用外掛後,你會在使用者列表中看到一個新列。

使用者在 WordPress 使用者列表中的最後登入時間

使用者在 WordPress 使用者列表中的最後登入時間

如果使用者在新增外掛後沒有登入過,則會顯示 “Never”。

手動顯示使用者上次登入日期程式碼片段

如果你熟悉通過 functions.php 或程式碼片段外掛在網站上新增程式碼片段,就可以用它來新增使用者上次登入時間。

這個程式碼片段有幾個功能,首先記錄使用者登入時間並儲存在 “last_login” 使用者元中。它還會在管理面板的使用者列表中新增一個可排序的 “Last Login” 管理列。最後,它允許您通過 [lastlogin] 簡碼顯示使用者的最後登入時間。通過使用 user_id 變數 [lastlogin user_id=2],該簡碼還可顯示特定使用者的最後登入資訊。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
//Record user's last login to custom meta
add_action( 'wp_login', 'smartwp_capture_login_time', 10, 2 );
function smartwp_capture_login_time( $user_login, $user ) {
update_user_meta( $user->ID, 'last_login', time() );
}
//Register new custom column with last login time
add_filter( 'manage_users_columns', 'smartwp_user_last_login_column' );
add_filter( 'manage_users_custom_column', 'smartwp_last_login_column', 10, 3 );
function smartwp_user_last_login_column( $columns ) {
$columns['last_login'] = 'Last Login';
return $columns;
}
function smartwp_last_login_column( $output, $column_id, $user_id ){
if( $column_id == 'last_login' ) {
$last_login = get_user_meta( $user_id, 'last_login', true );
$date_format = 'M j, Y';
$hover_date_format = 'F j, Y, g:i a';
$output = $last_login ? '<div title="Last login: '.date( $hover_date_format, $last_login ).'">'.human_time_diff( $last_login ).'</div>' : 'No record';
}
return $output;
}
//Allow the last login columns to be sortable
add_filter( 'manage_users_sortable_columns', 'smartwp_sortable_last_login_column' );
add_action( 'pre_get_users', 'smartwp_sort_last_login_column' );
function smartwp_sortable_last_login_column( $columns ) {
return wp_parse_args( array(
'last_login' => 'last_login'
), $columns );
}
function smartwp_sort_last_login_column( $query ) {
if( !is_admin() ) {
return $query;
}
$screen = get_current_screen();
if( isset( $screen->base ) && $screen->base !== 'users' ) {
return $query;
}
if( isset( $_GET[ 'orderby' ] ) && $_GET[ 'orderby' ] == 'last_login' ) {
$query->query_vars['meta_key'] = 'last_login';
$query->query_vars['orderby'] = 'meta_value';
}
return $query;
}
//Add [lastlogin] shortcode
function smartwp_lastlogin_shortcode( $atts ) {
$atts = shortcode_atts(
array(
'user_id' => false,
), $atts, 'lastlogin' );
$last_login = get_the_author_meta('last_login', $atts['user_id']);
if( empty($last_login) ){ return false; };
$the_login_date = human_time_diff($last_login);
return $the_login_date;
}
add_shortcode( 'lastlogin', 'smartwp_lastlogin_shortcode' );
<?php //Record user's last login to custom meta add_action( 'wp_login', 'smartwp_capture_login_time', 10, 2 ); function smartwp_capture_login_time( $user_login, $user ) { update_user_meta( $user->ID, 'last_login', time() ); } //Register new custom column with last login time add_filter( 'manage_users_columns', 'smartwp_user_last_login_column' ); add_filter( 'manage_users_custom_column', 'smartwp_last_login_column', 10, 3 ); function smartwp_user_last_login_column( $columns ) { $columns['last_login'] = 'Last Login'; return $columns; } function smartwp_last_login_column( $output, $column_id, $user_id ){ if( $column_id == 'last_login' ) { $last_login = get_user_meta( $user_id, 'last_login', true ); $date_format = 'M j, Y'; $hover_date_format = 'F j, Y, g:i a'; $output = $last_login ? '<div title="Last login: '.date( $hover_date_format, $last_login ).'">'.human_time_diff( $last_login ).'</div>' : 'No record'; } return $output; } //Allow the last login columns to be sortable add_filter( 'manage_users_sortable_columns', 'smartwp_sortable_last_login_column' ); add_action( 'pre_get_users', 'smartwp_sort_last_login_column' ); function smartwp_sortable_last_login_column( $columns ) { return wp_parse_args( array( 'last_login' => 'last_login' ), $columns ); } function smartwp_sort_last_login_column( $query ) { if( !is_admin() ) { return $query; } $screen = get_current_screen(); if( isset( $screen->base ) && $screen->base !== 'users' ) { return $query; } if( isset( $_GET[ 'orderby' ] ) && $_GET[ 'orderby' ] == 'last_login' ) { $query->query_vars['meta_key'] = 'last_login'; $query->query_vars['orderby'] = 'meta_value'; } return $query; } //Add [lastlogin] shortcode function smartwp_lastlogin_shortcode( $atts ) { $atts = shortcode_atts( array( 'user_id' => false, ), $atts, 'lastlogin' ); $last_login = get_the_author_meta('last_login', $atts['user_id']); if( empty($last_login) ){ return false; }; $the_login_date = human_time_diff($last_login); return $the_login_date; } add_shortcode( 'lastlogin', 'smartwp_lastlogin_shortcode' );
<?php
//Record user's last login to custom meta
add_action( 'wp_login', 'smartwp_capture_login_time', 10, 2 );

function smartwp_capture_login_time( $user_login, $user ) {
 update_user_meta( $user->ID, 'last_login', time() );
}

//Register new custom column with last login time
add_filter( 'manage_users_columns', 'smartwp_user_last_login_column' );
add_filter( 'manage_users_custom_column', 'smartwp_last_login_column', 10, 3 );

function smartwp_user_last_login_column( $columns ) {
 $columns['last_login'] = 'Last Login';
 return $columns;
}

function smartwp_last_login_column( $output, $column_id, $user_id ){
 if( $column_id == 'last_login' ) {
 $last_login = get_user_meta( $user_id, 'last_login', true );
 $date_format = 'M j, Y';
 $hover_date_format = 'F j, Y, g:i a';
 
 $output = $last_login ? '<div title="Last login: '.date( $hover_date_format, $last_login ).'">'.human_time_diff( $last_login ).'</div>' : 'No record';
 }
 
 return $output;
}

//Allow the last login columns to be sortable
add_filter( 'manage_users_sortable_columns', 'smartwp_sortable_last_login_column' );
add_action( 'pre_get_users', 'smartwp_sort_last_login_column' );

function smartwp_sortable_last_login_column( $columns ) {
 return wp_parse_args( array(
 'last_login' => 'last_login'
 ), $columns );
 
}

function smartwp_sort_last_login_column( $query ) {
 if( !is_admin() ) {
 return $query;
 }
 
 $screen = get_current_screen();
 
 if( isset( $screen->base ) && $screen->base !== 'users' ) {
 return $query;
 }
 
 if( isset( $_GET[ 'orderby' ] ) && $_GET[ 'orderby' ] == 'last_login' ) {
 
 $query->query_vars['meta_key'] = 'last_login';
 $query->query_vars['orderby'] = 'meta_value';
 
 }
 
 return $query;
}

//Add [lastlogin] shortcode
function smartwp_lastlogin_shortcode( $atts ) {
 $atts = shortcode_atts(
 array(
 'user_id' => false,
 ), $atts, 'lastlogin' );

 $last_login = get_the_author_meta('last_login', $atts['user_id']);
 if( empty($last_login) ){ return false; };
 $the_login_date = human_time_diff($last_login);
 return $the_login_date; 
}

add_shortcode( 'lastlogin', 'smartwp_lastlogin_shortcode' );

新增此程式碼段後,使用者的登入資訊將被記錄下來,你將看到一個新的最後登入列。如果使用者在新增後沒有登入,則會顯示 “No record” 資訊。

最後登入列

如果您需要知道確切的登入時間,也可以將滑鼠懸停在時間上,檢視完整的時間戳。

完整的時間戳

最重要的是,如果您熟悉 PHP,就可以輕鬆定製該功能的各個方面。

該程式碼片段還增加了在前端顯示使用者上次登入時間的功能。例如,您可以在網站的作者框中加入 [lastlogin] 簡碼,讓使用者看到作者最後一次線上的時間。

希望這篇快速指南對您展示如何顯示使用者上次登入 WordPress 的時間有所幫助。如果您有任何問題,請在下面的評論中告訴我。

評論留言