# Get user và custom user field trong wordpress

### Một số hàm liên quan đến user trong wordpress <a href="#mot-so-ham-lien-quan-den-user-trong-wordpress-0" id="mot-so-ham-lien-quan-den-user-trong-wordpress-0"></a>

* **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 <a href="#custom-user-field-trong-wordpress-1" id="custom-user-field-trong-wordpress-1"></a>

#### Custom user field là gì? <a href="#custom-user-field-la-gi-2" id="custom-user-field-la-gi-2"></a>

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 <a href="#tao-custom-user-field-3" id="tao-custom-user-field-3"></a>

Để 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
<?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\_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](https://huykira.net/wp-content/uploads/2017/12/show-form-add-user-meta-field.jpg)

### Tạo custom user field bằng plugin <a href="#tao-custom-term-field-bang-plugin-4" id="tao-custom-term-field-bang-plugin-4"></a>

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

* [ACF (Advanced Custom Fields)](https://vi.wordpress.org/plugins/advanced-custom-fields/)
* [Tootset types](https://huykira.net/tag/plugin-toolset)

### Get danh sách user trong wordpress <a href="#get-danh-sach-user-trong-wordpress-5" id="get-danh-sach-user-trong-wordpress-5"></a>

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
<?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>
```
