- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
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!
Để nhận được bài viết mới vui lòng đăng ký kênh kiến thức WordPress từ A-Z ở Form bên dưới. Bạn cũng có thể nhận được sự trợ giúp trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype