步骤1.将上次登录时间戳存储在用户元中
在显示最后的注册日期或时间之前,我们必须先收集它。WordPress默认不会收集或存储在任何地方,因此我们必须自己做。
您还必须了解WordPress中有两种登录类型:
- 通过默认
wp-login.php
形式, - 或通过
wp_signon()
代码中的函数。
幸运的是,有wp_login
一个适用于他们俩的动作钩子!
add_action( 'wp_login', 'misha_collect_login_timestamp', 20, 2 );
function misha_collect_login_timestamp( $user_login, $user ) {
update_user_meta( $user->ID, 'last_login', time() );
}
您要做的就是将这段代码复制到当前主题functions.php
/自定义插件/子主题的中functions.php
。只有从那时起,WordPress才会开始收集UNIX时间戳,并在每次用户登录您的网站时将其存储在wp_usermeta({db prefix} usermeta)表中。
步骤2.在“所有用户”页面上显示一列
add_filter( 'manage_users_columns', 'misha_add_last_login_column' );
add_filter( 'manage_users_custom_column', 'misha_last_login_column', 10, 3 );
function misha_user_last_login_column( $columns ) {
$columns['last_login'] = 'Last Login'; // column ID / column Title
return $columns;
}
function misha_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 = 'j M, Y';
$output = $last_login ? date( $date_format, $last_login ) : '-';
}
return $output;
}
使上次登录列可排序
我认为这是一个非常有用的步骤,因为它可以快速找出最近登录的用户。
请注意,在使列可排序时,没有一条规则适用于所有用户。对于自定义Users列,可以按以下说明的方式进行操作,但对于CPT列则完全不同。
add_filter( 'manage_users_sortable_columns', 'misha_sortable_columns' );
add_action( 'pre_get_users', 'misha_sort_last_login_column' );
function misha_sortable_columns( $columns ) {
return wp_parse_args( array(
'last_login' => 'last_login'
), $columns );
});
function misha_sort_last_login_column( $query ) {
if( !is_admin() ) {
return $query;
}
$screen = get_current_screen();
if( isset( $screen->id ) && $screen->id !== '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;
} );