Hướng dẫn get user và custom user field trong wordpress

Ngày đăng: 07 - 05 - 2020 Lượt xem: 2294 lượt

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 kiểm tra 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 sử 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 sử dụng cả 2 đoạn code trên nha, kết quả như sau

Hướng dẫn get user và custom user field trong wordpress

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 hỗ trợ như:

Mình có share plugin acf pro tại đây bạn nào cần thì download về nha:

Download code "Plugin ACF Pro phiên bản 5.8.9"
Để download code vui lòng thực hiện các bước sau!
Bước 1: Like fan page của Kira:
Bước 2: Để lại email, hệ thống sẽ kiểm tra và gởi code về mail trong vòng 10 phút!
Bonus:
Lưu ý: Một số trường hợp mail sẽ gởi vào mục spam. Các bạn vui lòng check kỹ ạ!

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é.

5 1 vote
Đánh giá bài viết

Nhận thông báo
Nhận thông báo cho
guest

4 Góp ý
Bình chọn
Mới nhất Cũ nhất
Inline Feedbacks
View all comments
Vượng

Em theo code này thì có hiển thị field nhưng ko lưu vào db. A có thể HD cách lưu vào DB không ak!

Vượng

Em check lại thấy có rồi ak. tks A nhé !. tại phần số hàng để mặc định là 25 Em không để ý ak!

october

Chào bạn, Mình muốn lấy thông tin User nào gửi dữ liệu từ Form…Nhờ bạn hướng dẫn cách hiện User đã đăng nhập vào trong Input Form HTML…

Bài viết liên quan

Tạo và quản lý vai trò người dùng trong WordPress

Tạo và quản lý vai trò người dùng trong WordPress

18 - 12 - 2021

WordPress đã là một lựa chọn phổ biến cho các trang web cần hệ thống quản lý nội dung...

Đếm số lượt xem bài viết WordPress

Đếm số lượt xem bài viết WordPress

19 - 04 - 2021

Đếm số lượt xem bài viết WordPress? Bạn đang muốn tạo bộ đếm số lượt xem trang/ bài viết để...

Sử dụng child theme trong WordPress

Sử dụng child theme trong WordPress

23 - 02 - 2021

Sử dụng child theme trong WordPress như thế nào? Nếu bạn đã từng sử dụng WordPress để xây dựng các...

Hướng dẫn tạo sidebar và get sidebar trong wordpress

Hướng dẫn tạo sidebar và get sidebar trong wordpress

08 - 05 - 2020

Sidebar trong wordpress sẽ giúp website linh động hơn. Giúp khách hàng có thể thay đổi một số thành...

Hướng dẫn tạo menu và get menu trong wordpress

Hướng dẫn tạo menu và get menu trong wordpress

07 - 05 - 2020

Menu trong wordpress là một thành phần khá quan trọng. Hầu hết các website wordpress đều có chức năng...

Hướng dẫn custom term field trong wordpress

Hướng dẫn custom term field trong wordpress

05 - 05 - 2020

Bài trước mình đã hướng dẫn cho bạn cách custom taxonomy trong wordpress, để tiếp nối các tính năng...

4
0
Would love your thoughts, please comment.x