Hiển thị lần đăng nhập cuối cùng của người dùng

Bạn đang phát triển một website có tính năng quản lý người dùng? Và bạn có nhu cầu muốn biết được lần cuối người dùng đăng nhập là lúc nào.

Nếu bạn cần một tính năng như vậy, thì bài viết này dành cho bạn. Nhưng trước hết, đây là kết quả bạn đạt được sau khi xem hết bài viết này:

Lưu trữ lần đăng nhập cuối cùng của người dùng

Trước khi hiển thị ngày hoặc giờ đăng nhập cuối cùng, chúng ta phải thu thập nó trước. WordPress không thu thập hoặc lưu trữ dữ liệu này theo mặc định, vì vậy chúng ta phải tự làm điều đó.

Có hai cách đăng nhập trong WordPress:

  • Dựa vào form wp-login.php
  • Hoặc dựa vào hàm wp_signon()

May mắn là, action hook wp_login hoạt động cho cả hai!

add_action( 'wp_login', 'hk_collect_login_timestamp', 20, 2 );

function hk_collect_login_timestamp( $user_login, $user ) {

 update_user_meta( $user->ID, 'last_login', time() );

}

Tất cả những gì bạn cần làm là thêm đoạn code trên vào file functions.php của theme hoặc child theme. Kể từ thời điểm này, tính năng thu thập dữ liệu đăng nhập lần cuối của người dùng mới bắt đầu được kích hoạt.

Hiển thị dữ liệu

Mình sẽ tạo một cột để hiển thị dữ liệu ở trang “Tất cả người dùng”. Để làm được điều này, mình sẽ sử dụng đoạn code dưới đây:

add_filter( 'manage_users_columns', 'hk_add_last_login_column' );
add_filter( 'manage_users_custom_column', 'hk_last_login_column', 10, 3 );

function hk_add_last_login_column( $columns ) {

 $columns['last_login'] = 'Last Login'; // column ID / column Title
 return $columns;
 
}

function hk_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 khi hoàn thành, bảng thành viên sẽ xuất hiện một cột mới có tên “Đăng nhập gần nhất”.

Làm cho cột dữ liệu có thể sắp xếp được

Mình nghĩ rằng đây là một bước khá hữu ích vì nó cho phép bạn nhanh chóng tìm ra những ai đã đăng nhập gần đây. Sử dụng đoạn code bên dưới để cột “Đăng nhập gần nhất” có thể sắp xếp được.

add_filter( 'manage_users_sortable_columns', 'hk_sortable_columns' );
add_action( 'pre_get_users', 'hk_sort_last_login_column' );

function hk_sortable_columns( $columns ) {

 return wp_parse_args( array(
   'last_login' => 'last_login'
 ), $columns );

}

function hk_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;

}

Lời kết

Mình hi vọng bài viết này sẽ phần nào giúp bạn quản lý được người dùng trên trang hiệu quả hơn. Đặc biệt là với những bạn đang phát triển website liên quan đến việc phát triển cộng đồng.

Nếu các bạn thấy bài viết này giúp ích cho bạn, hãy bình luận và chia sẻ bài viết này. Ngoài ra, bạn có thể theo dõi chuyên mục Thủ thuật WordPress và follow Facebook để biết thêm nhiều kiến thức mới nha.

5 3 votes
Đánh giá bài viết
Quang Phúc:
Leave a Comment