Trong quá trình phát triển website, việc quản lý và hiển thị thông tin người dùng là một phần cực kỳ quan trọng, đặc biệt với các hệ thống membership hoặc thương mại điện tử. Mặc định WordPress chỉ cung cấp một số trường cơ bản, nhưng với custom user field, bạn có thể biến trang cá nhân thành một kho lưu trữ dữ liệu đa dạng.
Việc tận dụng kỹ thuật này không chỉ giúp quản trị viên nắm bắt thông tin tốt hơn mà còn nâng cao trải nghiệm người dùng trên frontend. Trong bài viết này, chúng ta sẽ đi sâu vào cách tạo, lưu trữ và hiển thị các trường dữ liệu tùy chỉnh cho thành viên.
Một số hàm liên quan đến user trong WordPress
Để làm việc hiệu quả với hệ thống thành viên, trước tiên bạn cần nắm vững các hàm cốt lõi mà WordPress cung cấp. Các hàm này giúp bạn kiểm tra trạng thái đăng nhập hoặc truy xuất dữ liệu nhanh chóng mà không cần viết các câu truy vấn SQL phức tạp. Dưới đây là những công cụ không thể thiếu:
- is_user_logged_in(): Hàm boolean dùng để kiểm tra xem khách truy cập hiện tại đã đăng nhập hay chưa. Đây là bước kiểm tra an ninh cơ bản trước khi hiển thị các thông tin nhạy cảm.
- get_current_user_id(): Trả về ID của người dùng đang đăng nhập. Rất hữu ích khi bạn muốn lấy dữ liệu riêng tư của chính họ.
- wp_get_current_user(): Trả về một đối tượng (object) chứa đầy đủ thông tin của user hiện tại như user_login, user_email, display_name.
- get_user_by(): Cho phép bạn lấy thông tin người dùng dựa trên một tiêu chí cụ thể như ‘id’, ‘slug’, ’email’ hoặc ‘login’. Ví dụ: get_user_by(’email’, ‘admin@example.com’).
- get_users($args): Hàm quyền lực nhất để lấy danh sách người dùng dựa trên một mảng các tham số lọc như vai trò (role), số lượng (number), hay sắp xếp (orderby).
- get_avatar(): Hiển thị ảnh đại diện của người dùng thông qua dịch vụ Gravatar. Bạn có thể tùy chỉnh kích thước ảnh để phù hợp với giao diện.
- get_user_meta($id, $key, true): Đây là hàm chính để truy xuất dữ liệu từ các custom user field. Tham số thứ ba ‘true’ đảm bảo bạn nhận về một chuỗi thay vì một mảng.

Tìm hiểu về custom user field trong WordPress
Mặc dù WordPress khá linh hoạt, nhưng các trường thông tin mặc định như tên đăng nhập, email, tiểu sử thường không đủ cho các nhu cầu chuyên sâu. Nếu bạn đang xây dựng một sàn bất động sản, bạn có thể cần thêm trường ‘Số điện thoại’ hoặc ‘Địa chỉ liên hệ’. Nếu là web học tập, bạn sẽ cần trường ‘Khóa học đã tham gia’.
Custom user field là gì?
Về cơ bản, custom user field là những trường dữ liệu bổ sung được lưu trữ trong bảng wp_usermeta của cơ sở dữ liệu. Mỗi trường bao gồm một khóa (meta_key) và một giá trị (meta_value) tương ứng với ID của người dùng. Việc thêm mới một trường này giúp chúng ta mở rộng đối tượng WP_User mà không làm ảnh hưởng đến cấu trúc mặc định của mã nguồn WordPress. Đây là một kỹ thuật thuộc nhóm Metadata, tương tự như Custom Fields cho bài viết.
Hướng dẫn chi tiết cách tạo custom user field bằng code
Thay vì sử dụng các plugin nặng nề, việc thêm code vào file functions.php sẽ giúp website của bạn nhẹ nhàng và tối ưu hơn. Quy trình này gồm hai bước chính: hiển thị trường nhập liệu trong trang quản trị và xử lý lưu dữ liệu khi người dùng nhấn cập nhật.
Hiển thị khu vực nhập thông tin bổ sung
Để hiển thị form nhập liệu trong trang hồ sơ cá nhân, chúng ta cần móc (hook) vào hai action là show_user_profile (cho trang cá nhân của mình) và edit_user_profile (khi admin sửa hồ sơ người khác). Đoạn code dưới đây sẽ tạo thêm một trường nhập địa chỉ:
add_action( 'show_user_profile', 'kira_show_extra_profile_fields' );
add_action( 'edit_user_profile', 'kira_show_extra_profile_fields' );
function kira_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 đoạn code trên, chúng ta sử dụng hàm get_the_author_meta để lấy giá trị hiện tại của custom user field và hiển thị vào ô input. Điều này đảm bảo khi người dùng tải lại trang, họ vẫn thấy thông tin đã lưu trước đó.

Xử lý lưu dữ liệu vào cơ sở dữ liệu
Nếu chỉ hiển thị form mà không có hàm lưu, dữ liệu sẽ biến mất ngay khi bạn nhấn cập nhật. Chúng ta cần sử dụng hàm update_user_meta để ghi nhận thông tin vào database. Lưu ý việc kiểm tra quyền hạn của người dùng trước khi thực hiện lưu để đảm bảo tính bảo mật.
add_action( 'personal_options_update', 'kira_save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'kira_save_extra_profile_fields' );
function kira_save_extra_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) ) {
return false;
}
if ( isset( $_POST['address'] ) ) {
update_user_meta( $user_id, 'address', sanitize_text_field( $_POST['address'] ) );
}
}
Việc sử dụng sanitize_text_field là cực kỳ quan trọng để loại bỏ các ký tự độc hại trước khi đưa vào database. Sau khi hoàn thành hai bước này, bạn đã chính thức tạo thành công một custom user field hoạt động ổn định.

Thêm được trường vào thông tin user
Cách lấy danh sách user và hiển thị ngoài giao diện
Sau khi đã có dữ liệu, bước tiếp theo là hiển thị chúng ra ngoài frontend cho khách hàng thấy. Giả sử bạn muốn làm một trang danh sách thành viên tiêu biểu với ảnh đại diện, tên và địa chỉ (dữ liệu từ custom user field vừa tạo). Bạn có thể sử dụng vòng lặp foreach kết hợp với hàm get_users.
<?php
$args = array(
'number' => 10,
'orderby' => 'registered',
'order' => 'DESC'
);
$users = get_users($args);
if ( ! empty( $users ) ) :
echo '<div class="user-grid">';
foreach ( $users as $user ) : ?>
<div class="user-card">
<div class="avatar"><?php echo get_avatar( $user->ID, 80 ); ?></div>
<h4><?php echo esc_html( $user->display_name ); ?></h4>
<p>Địa chỉ: <?php echo esc_html( get_user_meta( $user->ID, 'address', true ) ); ?></p>
</div>
<?php endforeach;
echo '</div>';
endif; ?>
Cách tiếp cận này rất linh hoạt, cho phép bạn xây dựng bất kỳ giao diện nào từ sidebar cho đến các trang giới thiệu đội ngũ. Bạn cũng có thể tham khảo thêm tài liệu tại WP Developer Resources để hiểu rõ hơn về các tham số lọc nâng cao của hàm này.

Giải pháp tối ưu với plugin quản lý custom user field
Nếu bạn không muốn can thiệp quá sâu vào mã nguồn hoặc cần tạo hàng chục trường dữ liệu phức tạp như hình ảnh, tệp tin, bản đồ, thì việc sử dụng plugin là lựa chọn thông minh. Một trong những công cụ mạnh mẽ nhất hiện nay chính là Advanced Custom Fields (ACF). Với phiên bản Pro, bạn có thể dễ dàng gán các trường dữ liệu vào đối tượng User chỉ bằng vài cú click chuột.
Sử dụng plugin giúp bạn tiết kiệm thời gian và giảm thiểu sai sót trong quá trình code. Để tối ưu hóa chi phí và nhận được đầy đủ tính năng mạnh mẽ nhất, bạn có thể tham khảo Key bản quyền ACF Pro để bắt đầu nâng cấp hệ thống của mình ngay hôm nay. Ngoài ra, việc kết hợp với các kỹ thuật SEO WordPress với AI sẽ giúp các trang hồ sơ người dùng của bạn có thứ hạng cao hơn trên công cụ tìm kiếm.
Lưu ý quan trọng khi làm việc với metadata người dùng
Khi triển khai custom user field, có một vài lưu ý về hiệu năng và bảo mật mà bạn cần ghi nhớ. Thứ nhất, tránh lưu trữ quá nhiều dữ liệu lớn (như nội dung bài viết dài) vào bảng usermeta vì nó có thể làm chậm quá trình truy vấn người dùng. Thứ hai, luôn luôn validate dữ liệu đầu vào để tránh các cuộc tấn công XSS hoặc SQL Injection.
Cuối cùng, nếu website của bạn có lượng người dùng lớn, hãy cân nhắc sử dụng các kỹ thuật caching để giảm tải cho database. Việc truy xuất custom user field liên tục trong các vòng lặp lớn có thể gây áp lực đáng kể lên máy chủ nếu không được tối ưu đúng cách.
Lời kết
Việc làm chủ kỹ thuật custom user field mở ra cơ hội vô hạn để bạn tùy biến website WordPress theo ý muốn. Từ việc thêm những thông tin liên hệ đơn giản đến việc xây dựng một hệ thống quản lý nhân sự phức tạp, tất cả đều nằm trong tầm tay bạn. Hy vọng bài hướng dẫn này đã cung cấp cho bạn cái nhìn sâu sắc và những đoạn code hữu ích để áp dụng vào dự án thực tế. Đừng quên theo dõi các bài viết tiếp theo để cập nhật thêm nhiều thủ thuật lập trình theme đỉnh cao nhé!
Những câu hỏi thường gặp về Get User và Custom User Field trong WordPress
Custom User Field trong WordPress là gì?
Là các trường dữ liệu bổ sung (như số điện thoại, địa chỉ) được lưu trữ trong bảng wp_usermeta để mở rộng thông tin hồ sơ người dùng ngoài các trường mặc định.
Làm thế nào để lấy ID của người dùng đang đăng nhập?
Bạn sử dụng hàm get_current_user_id() để lấy ID của thành viên hiện tại đang truy cập website.
Hàm nào dùng để lấy giá trị của một custom user field?
Hàm get_user_meta($user_id, $key, true) là công cụ chính để truy xuất giá trị từ các trường dữ liệu tùy chỉnh của người dùng.
Tôi có thể tạo custom user field mà không dùng plugin không?
Có, bạn có thể thêm code vào file functions.php và sử dụng các hook như show_user_profile để hiển thị trường nhập và update_user_meta để lưu dữ liệu.
Làm sao để đảm bảo an toàn dữ liệu khi lưu custom field?
Bạn cần sử dụng hàm sanitize_text_field() để lọc dữ liệu đầu vào và kiểm tra quyền hạn bằng current_user_can() trước khi thực hiện lệnh lưu.
Cách hiển thị danh sách nhiều người dùng kèm thông tin tùy chỉnh?
Sử dụng hàm get_users($args) để lấy danh sách thành viên, sau đó dùng vòng lặp foreach kết hợp với get_user_meta() để hiển thị thông tin ra frontend.
Có plugin nào hỗ trợ tạo custom user field chuyên nghiệp không?
Advanced Custom Fields (ACF), đặc biệt là phiên bản ACF Pro, là giải pháp hàng đầu giúp tạo và quản lý hàng loạt trường dữ liệu người dùng phức tạp.
Cần lưu ý gì về hiệu năng khi sử dụng custom user field?
Tránh lưu dữ liệu quá lớn vào usermeta và nên sử dụng kỹ thuật caching khi truy xuất dữ liệu trong các vòng lặp lớn để giảm tải cho database.