Menu

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

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.
Giao diện quản lý thông tin thành viên trong WordPress - Hướng dẫn get user và custom user field trong wordpress
Giao diện quản lý thông tin thành viên trong WordPress

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 đó.

Lập trình custom user field thông qua file functions.php - Hướng dẫn get user và custom user field trong wordpress
Lập trình custom user field thông qua file functions.php (Mô phỏng)

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.

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

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>
    &lt?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.

Hiển thị danh sách thành viên ra ngoài trang chủ - Hướng dẫn get user và custom user field trong wordpress
Hiển thị danh sách thành viên ra ngoài trang chủ

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.

Bài trước Hướng dẫn custom term field trong wordpress Bài tiếp theo Get comment WordPress và Custom comment field WordPress

Đánh giá từ khách hàng

Tổng hợp trải nghiệm thực tế từ khách đã lưu trú.

5,0 /5

Tuyệt vời

9 đánh giá

Tuyệt vời
9
Rất tốt
0
Trung bình
0
Tạm được
0
Tệ
0
Chất lượng nội dung
5,0
Áp dụng thực tế
5,0
Trình bày bài viết
5,0
Giá trị kiến thức
5,0
LA

Lý Quốc Anh

Đã đánh giá vào 12/02/2026

5,0 /5

Code chuẩn, giải thích rành mạch. Đặc biệt là đoạn hook vào show_user_profile và edit_user_profile, trước mình chỉ hook vào một cái nên khi admin sửa hộ user khác toàn không thấy dữ liệu đâu. Note lại ngay để dùng cho các dự án sau.

NP

Nguyễn Mai Phương

Đã đánh giá vào 12/02/2026

5,0 /5

Giao diện quản lý thông tin thành viên sau khi thêm field nhìn rất chuyên nghiệp. Mình đã thêm thành công trường 'Link Facebook' và 'Zalo' cho các tác giả trên website tin tức của mình. Rất hữu ích!

BT

Bùi Minh Tuấn

Đã đánh giá vào 12/02/2026

5,0 /5

Bài viết hay! Admin có thể chia sẻ thêm về cách tối ưu truy vấn khi lấy custom user field trong một danh sách hàng ngàn thành viên không? Mình sợ dùng get_users kết hợp vòng lặp sẽ gây chậm server như bạn có lưu ý ở cuối bài.

HT

Hoàng Văn Thái

Đã đánh giá vào 12/02/2026

5,0 /5

Mình đang lăn tăn giữa việc code tay và dùng plugin, đọc xong bài này quyết định mua luôn Key ACF Pro bên bạn cho dự án lớn của khách. Với các field cơ bản thì code theo bài này quá ổn, nhưng dự án của mình cần upload nhiều file nên dùng plugin cho chuyên nghiệp. Cảm ơn tư vấn của ad nhé!

ĐT

Đặng Thu Thảo

Đã đánh giá vào 12/02/2026

5,0 /5

Cái tham số thứ 3 'true' trong hàm get_user_meta đúng là cứu cánh cho mình. Trước mình toàn nhận về mảng (array) rồi loay hoay mãi không hiển thị ra chuỗi được. Đọc bài này mới vỡ lẽ ra nhiều điều cơ bản mà quan trọng.

PB

Phạm Gia Bảo

Đã đánh giá vào 12/02/2026

5,0 /5

Hướng dẫn rất dễ hiểu, nhất là phần vòng lặp foreach để hiển thị danh sách user ra frontend. Mình đã làm được trang 'Đội ngũ chuyên gia' cho công ty chỉ sau 15 phút đọc bài này. Hy vọng Kira App sẽ có thêm nhiều bài chia sẻ về tùy biến WP-User sâu hơn nữa.

TN

Trần Hoàng Nam

Đã đánh giá vào 12/02/2026

5,0 /5

Rất thích cách bạn nhấn mạnh vào việc sử dụng sanitize_text_field. Nhiều bạn mới học code thường bỏ qua bước này mà không biết nó rất nguy hiểm cho bảo mật database. Một bài viết rất có tâm và kiến thức nền tảng vững chắc!

NV

Nguyễn Thị Thanh Vân

Đã đánh giá vào 12/02/2026

5,0 /5

Admin cho mình hỏi chút, nếu mình muốn tạo thêm một trường 'Ngày sinh' và muốn nó hiển thị dạng date picker trong trang quản trị thì đoạn code trên cần tùy chỉnh như thế nào ạ? Hay là nên dùng ACF Pro như bạn gợi ý để tối ưu thời gian hơn?

Lê Minh Đức

Đã đánh giá vào 12/02/2026

5,0 /5

Bài viết cực kỳ chi tiết và đúng thứ mình đang tìm! Trước đây mình toàn cài plugin để thêm field nhưng đúng là dùng code qua file functions.php giúp website nhẹ hơn hẳn. Mình đã áp dụng thành công hàm get_user_meta để lấy số điện thoại cho trang môi giới của mình. Cảm ơn tác giả nhiều!

Viết đánh giá của bạn

Vui lòng đăng nhập để gửi đánh giá.
Chất lượng nội dung
Áp dụng thực tế
Trình bày bài viết
Giá trị kiến thức

Tối đa 5 ảnh, mỗi ảnh không quá 5MB.

    Tìm kiếm... Ctrl+K

    Kira ChatBox - Trợ lý AI