Home WordpressWordPress cơ bản Thêm cột “Last Login” user đăng nhập lần cuối trong WordPress

Thêm cột “Last Login” user đăng nhập lần cuối trong WordPress

by admincp

Trong bài trước mình có hướng dẫn thêm cột hiển thị ngày đăng ký user trong quản trị WordPress. Hôm nay mình sẽ hướng dẫn làm thế nào để biết thời điểm cuối cùng người dùng đã đăng nhập vào website của bạn. Kết quả trông như thế này.

Bước 1. Lưu thời điểm cuối Login trong User Meta

Trước khi hiển thị ngày đăng nhập cuối cùng cho mỗi tài khoản người dùng, chúng ta phải thu thập nó trong mỗi lần người dùng đăng nhập vào website của bạn. Mặc định, WordPress không thu thập bất kỳ thông tin về user, vì vậy bạn phải code thêm cho tính năng này.

Có hai loại đăng nhập trong WordPress:

  • qua form wp-login.php   
  • hoặc qua hàm  wp_signon()     trong CODE.

May mắn wordpress có cung cấp hook wp_login cho cả 2 trường hợp đăng nhập trên!

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() );
 
}

Đơn giản chỉ  sao chép đoạn mã này đến tệp functions.php của giao diện hiện tại. Đoạn code này cho phép WordPress bắt đầu lưu thời gian  vào trong bảng wp_usermeta mỗi khi một người dùng đăng nhập vào trang web của bạn.

Bước 2. Hiển thị thông tin trên trang All Users

Bây giờ chúng ta sẽ thêm một mới trong trang liệt kê danh sách users để hiển thị thời điểm mà người dùng có đăng nhập vào lần cuối. Thêm đoạn mã sau đây vào file functions.php

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;
 
}

Sau đó tải lại trang, Kết quả  chúng ta có được giống như sau:

Thêm xắp xếp (Sortable) cho cột

Bước này không bắt buộc nhưng khá hữu ích vì nó cho phép bạn xắp xếp thời gian nếu bạn muốn biết người dùng nào đang hoạt động tích cực ở gần đây.

Lưu ý, không có một quy tắc chung khi bạn đang thực hiện sắp xếp cột, đối với cột tùy chỉnh user ‘Last Login’ có thể thực hiện theo cách  dưới đây, nhưng nó hoàn toàn khác với custom post type.

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;
 
} );

Chúc bạn thành công!

Liên hệ

Công ty chuyên Thiết kế website uy tín nhất Miền Bắc: http://vinastar.net

Hotline tư vấn: 0989 48 3456

Nguồn: Sưu tầm trên internet

You may also like

Leave a Comment