Tiếp tục với seri hướng dẫn lập trình theme wordpress, hôm nay mình sẽ hướng dẫn cho các bạn cách custom user field cũng như cách get danh sách user ra ngoài frontend.
Khi làm website wordpress khách hàng ít khi chú ý đến phần user. Nhưng nếu đụng đến những website có quản lý thành viên thì anh em coder thường hay bỡ ngỡ và rất tốn thời gian.
Vì thế hôm nay mình sẽ tổng hợp một số kiến thức liên quan đến user trong wordpress.
Một số hàm liên quan đến user trong wordpress
- is_user_logged_in() -> Hàm này đánh giá user có đang login vào web hay không
- get_current_user_id() -> Get id của user đang login
- wp_get_current_user() -> Get thông tin của user đang login
- get_user_by(‘id’, 1) -> Get user user khi biết id
- get_users($args) -> Get list user với tham số
- get_avatar(1, 32 ) -> Get avatar của user: 1 là id user, 32 là kích thước avatar (32px)
- get_user_meta($id, $key, true) -> Get user meta field
Custom user field trong wordpress
Custom user field là gì?
Mặc định mỗi user trong wordpress sẽ có các trường như: Tên đăng nhập, email, tên hiển thị, avatar, mô tả… Và cũng như những chức năng custom khác mình đã giới thiệu, thì wordpress cũng cung cấp chức năng custom hay là thêm mới 1 trường của user.
Việc thêm mới một trường của user người ta gọi là custom user field.
Tạo custom user field
Để dễ hình dùng mình sẽ có ví dụ: Tạo thêm 1 field để lưu địa chỉ của user
Để tạo custom user field trong wordpress các bạn thêm đoạn code này vào file functions.php của theme đang dùng nha.
*Thêm khu vực nhập địa chỉ cho user
<?php add_action( 'show_user_profile', 'my_show_extra_profile_fields' ); add_action( 'edit_user_profile', 'my_show_extra_profile_fields' ); function my_show_extra_profile_fields( $user ) { ?> <h3>Thông tin cá nhân</h3> <table class="form-table"> <tr> <th><label for="address">Địa chỉ</label></th> <td> <input type="text" name="address" id="address" value="<?php echo esc_attr( get_the_author_meta( 'address', $user->ID ) ); ?>" class="regular-text" /><br /> <span class="description">Nhập địa chỉ</span> </td> </tr> </table> <?php } ?>
Giải thích:
- my_show_extra_profile_fields là hàm hiển thị from nhập địa chỉ, hàm này bạn có thể đặt tên tùy thích. Form này giống như một form nhập liệu bình thường bạn có thể nhập nhiều field khác nhau. Hàm này được móc vào 2 action là show_user_profile, edit_user_profile
- Action show_user_profile là action cho phép hiển thị form nhập địa chỉ ở khu vực xem trang cá nhân của 1 user.
- Action edit_user_profile là action cho phép hiển thị form nhập địa chỉ ở khu vực chỉnh sửa thông tin của cá nhân của 1 user nào đó.
- Name = “address”: address là key của meta field, key này tiêu dùng để lấy dự liệu ra ngoài
*Lưu thông tin địa chỉ vào trong database
<?php add_action( 'personal_options_update', 'my_save_extra_profile_fields' ); add_action( 'edit_user_profile_update', 'my_save_extra_profile_fields' ); function my_save_extra_profile_fields( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) return false; update_usermeta( $user_id, 'address', $_POST['address'] ); } ?>
Giải thích:
- my_save_extra_profile_fields là hàm thực hiển việc lưu địa chỉ vào database. Hàm này được móc vào trong 2 action là: personal_options_update và edit_user_profile_update
- personal_options_update: Là action thực hiện việc lưu thông tin ở khu vực xem thông tin user.
- edit_user_profile_update: Là action thực hiện việc lưu thông tin ở khu vực edit user.
=> Để tạo custom user field bạn phải tiêu dùng cả 2 đoạn code trên nha, kết quả như sau
Tạo custom user field bằng plugin
Cũng như tất cả các chức năng khác trong wordpress, thì custom user field này cũng có hàng tá plugin tương trợ như:
- ACF (Advanced Custom Fields)
- Tootset types
Get danh sách user trong wordpress
Mình sẽ lấy danh sách 20 user mới nhất của website. Đồng thời hiển thị tên, địa chỉ, avatar của user, các bạn chèn đoạn code sau vào khu vực cần hiển thị list user nha.
<?php $array = array( 'number' => 20, 'orderby' => 'id', 'order' => 'DESC' ); $listUser = get_users($array); ?> <div class="sidebar-child"> <div class="list-user"> <ul> <?php foreach ($listUser as $key => $value) { ?> <li data-toggle="tooltip" data-placement="left" title="<?php echo $value->display_name; ?>"> <p><?php echo $value->display_name; ?></p> <p><?php echo the_author_meta( 'address', $value->ID ); ?></p> <a class="ico-brod"> <?php echo get_avatar( $value->user_email, 40 ); ?> </a> </li> <?php } ?> </ul> </div> </div>
Lời kết:
Như vậy là hôm nay mình đã hướng dẫn cho các bạn chức năng custom user field, hy vọng nó sẽ có ích trong quá trình học lập trình theme của các bạn.
Hẹn gặp lại trong các bài viết sau nhé.
Trả lời