Get user và custom user field 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'] );
    } 
?>
123456789

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_updateedit_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

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ư:

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>

Last updated