预计阅读时间: 7 分钟

步骤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;
 
} );
此文章对你有帮助吗? 已有 0 人说这篇文章是有用的。