Hướng dẫn custom user meta field trong wordpress

18/12/2017 Wordpress 8815 lượt xem
Lưu bài viết

Chức năng user và quản lý user trong wordpress không được đánh giá cao bởi khả năng phân quyền (được xem làm kém) và khả năng tùy chỉnh các trường của user ít. Để nâng cao sức mạnh của phần quản lý user này, wordpress đã xây dựng lên chức năng custom user meta field.

Để tìm hiểu rõ hơn về chức năng này hôm nay mình xin hướng dẫn cho các bạn cách custom user meta field trong wordpress.

custom user meta field trong wordpress

User meta field trong wordpress là gì?

Mặc định khi cài wordpress lên, thì tương ứng với mỗi user sẽ có một số trường để lưu các thông tin của user đó như:

  • Username
  • Password
  • Email
  • Website
  • Description

Hướng dẫn custom user meta field trong wordpress

Các trường mặc định khi cài wordpress lên

Các trường này được xem là user meta, việc mà chúng ta đi tạo một trường mới mà mặc định không có người ta gọi là custom user meta. Vậy là sao để custom user meta trong wordpress? chúng ta bắt đầu đi tìm hiểu nhé!.

Hướng dẫn custom user meta field trong wordpress

Cách 1: Dùng plugin

Đến thời điểm hiển tại đây cũng là tính năng này khá phổ biến, nên có rất nhiều plugin hỗ trợ vấn đề này ví dụ như: Use metaUser Meta Manager, Toolset types... Trong số các plugin đó mình khuyên bạn dùng plugin toolset types, đây là plugin mình đã sử dụng, cảm thấy rất tốt và cũng có loạt bài viết hướng dẫn sử dụng plugin toolset types này.

Để custom user meta field sử dụng plugin toolset types các bạn vào: wp-admin -> Toolset -> Các trường dữ liệu người dùng, Ở đây các bạn tiến hành tạo nhóm trường, sau đó tạo các field. Có rất nhiều kiểu để các bạn lựa chọn như: Kiểu text, số, hình ảnh, ngày giờ, văn bản, select option...

custom user meta field trong wordpress

Cách 2: Sử dụng code trong file functions.php của theme

Để dễ hình dùng mình sẽ đưa ra một yêu cầu sau đó chúng ta sẽ đi thực hiện yêu cầu đó nhé!

Ví dụ bày chừ mình cần tạo một trường để lưu địa chỉ của mỗi user, có nghĩa là khu vực thêm và chỉnh sửa thông tin của mỗi user sẽ xuất hiện ô textbox để chúng ta nhập địa chỉ. Để làm chức năng chúng ta thực hiện như sau.

**Thêm khu vực nhập địa chỉ cho user: Các bạn copy và dán đoạn code này vào file functions.php của theme đang sử dụng nhé!

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

Trong đó: 

  • 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

Sau khi chèn đoạn code này vào file function các bạn vào: wp-admin -> Thành viên-> sồ sơ của bạn, hoặc wp-admin-> Thành Viên-> chỉnh thông tin của 1 thành viên nào đó các bạn sẽ thấy được như hình bên dưới, có nghĩa các bạn đã thành công trong việc thêm khu vực để nhập địa chỉ:

custom user meta fields

Thêm user meta field thành công

**Lưu thông tin địa chỉ vào trong database: Copy và dán đoạn code này vào file functions.php của theme đang sử dụng nhé!

<?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'] );
    } 
?>

Trong đó: 

  • 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_updateLà action thực hiện việc lưu thông tin ở khu vực xem thông tin user.
  • edit_user_profile_updateLà action thực hiện việc lưu thông tin ở khu vực edit user.

Các lấy dự liệu của user meta field: Chúng ta sử dụng hàm sau

<?php the_author_meta( $meta_key, $user_id ); ?>

Trong đó: $meta_key là key của trường mà bạn cần lấy, ở đây là address, $user_id là id của user bạn cần lấy.

Tóm lại:

Hôm nay mình đã hướng dẫn cho các bạn cách custom user meta field trong wordpress. Đây là một tính năng rất cần thiết khi bạn muốn phát triển những tính năng thêm cho user trong wordpress. Đây là một trong những tính năng biến wordpress trở thành cms vô đối. Hy vọng với chút kiến thức nhỏ này sẽ giúp ích cho các bạn trong quá trình học wordpress, hãy theo chuyển mục hướng dẫn lập trình theme wordpress trên blog để cùng học wordpress hiệu quả nhé!

Chào thân ái và quyết thắng!