Menu

Custom field trong wordpress và Metabox

Custom field trong WordPress là một trong những tính năng mạnh mẽ nhất nhưng thường bị những người mới bắt đầu bỏ qua. Nếu bạn đã từng thắc mắc làm thế nào để các website tin tức lớn hiển thị thêm thông tin như đánh giá phim, điểm số trận đấu hay giá sản phẩm một cách chuyên nghiệp, thì câu trả lời chính là dựa vào chức năng thần thánh này. Việc hiểu rõ và làm chủ các trường tùy chỉnh sẽ giúp bạn biến một blog đơn giản thành một hệ thống quản trị nội dung (CMS) thực thụ với khả năng tùy biến vô hạn.

Giao diện quản lý custom field chuyên nghiệp trên WordPress - Custom field trong wordpress và Metabox
Giao diện quản lý custom field chuyên nghiệp trên WordPress

Tiếp tục với loạt bài viết về hướng dẫn lập trình giao diện, hôm nay chúng ta sẽ đi sâu vào tìm hiểu custom field trong WordPress. Tính năng này khi được kết hợp với custom post type sẽ tạo nên một bộ đôi ‘song kiếm hợp bích’, giúp WordPress đánh bại mọi đối thủ trong thế giới CMS. Bài viết này sẽ cung cấp cho bạn từ những khái niệm cơ bản nhất đến cách áp dụng nâng cao bằng code và plugin chuyên dụng.

Custom field trong WordPress là gì?

Về cơ bản, mỗi bài viết mặc định trong WordPress thường chỉ bao gồm các thông tin cơ bản như: tiêu đề, nội dung bài viết, ảnh đại diện, chuyên mục và thẻ. Tuy nhiên, trong nhiều trường hợp thực tế, bạn cần lưu trữ thêm các thông tin đặc thù khác. Ví dụ, nếu bạn làm web bán điện thoại, bạn sẽ cần thêm các trường như ‘Dung lượng pin’, ‘Màn hình’, ‘Giá bán’. Những thông tin bổ sung này chính là metadata, và công cụ để tạo ra chúng chính là custom field trong WordPress.

Hệ thống cơ sở dữ liệu của WordPress lưu trữ các thông tin này trong bảng wp_postmeta. Mỗi custom field trong WordPress sẽ bao gồm một cặp giá trị: Key (Tên trường) và Value (Giá trị của trường). Việc tách biệt dữ liệu giúp bạn dễ dàng quản lý, lọc và hiển thị thông tin ở bất kỳ đâu trên giao diện mà không làm ảnh hưởng đến phần nội dung chính của bài viết. Điều này không chỉ áp dụng cho post hay page mà còn hoạt động hoàn hảo trên mọi loại custom post type mà bạn tạo ra.

Thao khảo tải liệu gốc về custom post type còn nếu khó khăn trong việc đọc tài liệu gốc thì hãy đọc nội dung sau đây mình đã hướng dẫn rất chi tiết về vấn đề này

Hướng dẫn tạo custom field trong WordPress bằng phương pháp thủ công

Có thể bạn chưa biết, WordPress đã tích hợp sẵn một trình quản lý trường tùy chỉnh ngay trong lõi mà không cần cài thêm bất kỳ công cụ nào. Để thực hiện ví dụ thực tế: ‘Hiển thị link nguồn dưới mỗi bài viết’, chúng ta sẽ thực hiện các bước sau đây.

Bước 1: Kích hoạt bảng điều khiển trường tùy chỉnh

Mặc định, khu vực nhập custom field trong WordPress có thể bị ẩn để làm gọn giao diện soạn thảo. Bạn cần truy cập vào màn hình chỉnh sửa bài viết, nhấn vào dấu ba chấm ở góc trên bên phải, chọn ‘Tùy chọn’ (Preferences), sau đó vào mục ‘Bảng’ (Panels) và gạt công tắc bật ‘Trường tùy chỉnh’ (Custom Fields). Sau khi trang load lại, bạn kéo xuống dưới cùng của trình soạn thảo để thấy khu vực làm việc mới.

Hiển thị custom field

Hiển thị custom field

Bước 2: Khởi tạo và nhập dữ liệu

Tại khu vực ‘Trường tùy chỉnh’, bạn nhấn vào ‘Nhập mới’. Ở cột ‘Tên’, hãy nhập một slug viết liền không dấu, ví dụ: ‘link-nguon’. Ở cột ‘Giá trị’, bạn điền đường dẫn URL của bài viết gốc. Sau khi hoàn tất, nhấn ‘Thêm trường tùy biến’. Từ các bài viết sau, bạn chỉ cần chọn lại tên trường ‘link-nguon’ từ danh sách thả xuống thay vì phải nhập lại từ đầu. Đây là cách quản lý custom field trong WordPress cơ bản nhất mà mọi lập trình viên nên biết.

Khởi tạo và nhập dữ liệu

Khởi tạo và nhập dữ liệu

Bước 3: Hiển thị dữ liệu ra ngoài front-end

Để dữ liệu xuất hiện trên website cho người dùng thấy, bạn cần can thiệp vào file single.php hoặc nội dung template trong theme của mình. Sử dụng hàm get_post_meta để lấy giá trị của custom field trong WordPress. Đoạn code mẫu như sau: <?php echo get_post_meta(get_the_ID(), 'link-nguon', true); ?>. Trong đó, tham số ‘true’ đảm bảo hàm sẽ trả về kết quả dưới dạng chuỗi đơn thay vì một mảng dữ liệu phức tạp.

Chèn code vào nới cần hiển thị

Chèn code vào nới cần hiển thị

Kết quả

Kết quả

Tạo custom field trong WordPress chuyên nghiệp với plugin ACF

Mặc dù phương pháp thủ công rất gọn nhẹ, nhưng nó có một nhược điểm lớn là giao diện nhập liệu khá thô sơ và khó sử dụng đối với người dùng cuối. Bạn không thể tạo ra các trường chọn ngày tháng, tải lên hình ảnh hay chọn màu sắc một cách trực quan. Đó là lý do tại sao plugin Advanced Custom Fields (ACF) ra đời và trở thành tiêu chuẩn vàng để xử lý custom field trong WordPress hiện nay. Bạn có thể tìm hiểu thêm về sức mạnh của nó tại Advanced Custom Fields.

Screenshot

Plugin ACF hỗ trợ nhiều kiểu dữ liệu đa dạng

Tại sao nên sử dụng plugin Advanced Custom Fields (ACF)?

ACF cung cấp một giao diện người dùng tuyệt vời, cho phép bạn tạo ra hơn 30 loại trường khác nhau từ văn bản đơn giản đến các thư viện ảnh phức tạp. Đặc biệt, nếu bạn đang xây dựng những dự án quy mô lớn, việc sở hữu Key bản quyền ACF Pro sẽ mở khóa các tính năng cực mạnh như Repeater Field (lặp lại nội dung), Flexible Content và Options Page. Việc quản lý custom field trong WordPress qua ACF giúp giảm thiểu sai sót trong quá trình nhập liệu của biên tập viên.

Các bước thiết lập và cấu hình ACF chi tiết

Sau khi cài đặt plugin, bạn sẽ thấy menu ‘Custom Fields’ xuất hiện trong quản trị. Hãy nhấn ‘Add New’ để tạo một Field Group (Nhóm trường). Ví dụ, bạn tạo nhóm ‘Thông tin sản phẩm’ và bắt đầu thêm các trường như: Giá (kiểu Number), Màu sắc (kiểu Color Picker), Hình ảnh chi tiết (kiểu Image). Một tính năng cực kỳ thông minh của ACF là phần ‘Location’, giúp bạn quy định nhóm custom field trong WordPress này chỉ hiển thị ở một chuyên mục cụ thể hoặc một kiểu bài viết nhất định.

Cách lấy dữ liệu từ ACF để hiển thị ra front-end

ACF đơn giản hóa việc code bằng các hàm riêng của mình. Thay vì dùng get_post_meta dài dòng, bạn chỉ cần dùng: <?php the_field('ten_field'); ?> để hiển thị dữ liệu hoặc <?php $value = get_field('ten_field'); ?> để lấy giá trị gán vào biến xử lý logic. Đối với các trường phức tạp hơn như hình ảnh, ACF sẽ trả về một mảng chứa URL, ID và cả các thông tin tối ưu SEO. Việc ứng dụng custom field trong WordPress thông qua ACF giúp website của bạn vận hành trơn tru và chuyên nghiệp hơn bao giờ hết.

Khái niệm metabox và mối liên hệ với custom field

Nhiều người thường nhầm lẫn giữa metabox và custom field trong WordPress. Nói một cách dễ hiểu, custom field chính là dữ liệu bên trong, còn metabox chính là cái khung (giao diện) chứa các trường đó trong trang chỉnh sửa bài viết. Khi bạn sử dụng ACF để tạo giao diện nhập liệu đẹp mắt, thực chất bạn đang tạo ra các metabox tùy chỉnh để người dùng tương tác với dữ liệu metadata một cách dễ dàng hơn.

Mối liên hệ giữa Metabox UI và cơ sở dữ liệu metadata - Custom field trong wordpress và Metabox
Mối liên hệ giữa Metabox UI và cơ sở dữ liệu metadata

Việc tự tay code metabox yêu cầu kiến thức lập trình PHP vững vàng thông qua các hook như add_meta_boxes và save_post. Tuy nhiên, với sự phát triển của công nghệ, hầu hết các nhà phát triển hiện nay đều ưu tiên sử dụng framework hoặc plugin để tiết kiệm thời gian mà vẫn đảm bảo tính bảo mật và hiệu suất. Hiểu rõ bản chất của metabox giúp bạn tùy biến khu vực quản trị custom field trong WordPress một cách khoa học, nâng cao trải nghiệm cho khách hàng khi bàn giao website.

Dưới đây là cách tạo Meta Box riêng để nhập custom field link-nguon một cách chuyên nghiệp, không dùng khu vực Custom Fields mặc định của WordPress.

Bạn sẽ có:

  • 1 ô nhập “Link nguồn” ngay trong màn hình soạn thảo
  • Lưu dữ liệu đúng chuẩn WordPress
  • An toàn (nonce, sanitize, capability)
  • Dễ mở rộng sau này

Bước 1 — Tạo Meta Box

Thêm vào functions.php của theme (hoặc plugin riêng):

// Tạo Meta Box
function nhan_add_link_nguon_metabox() {
    add_meta_box(
        'nhan_link_nguon_box',          // ID
        'Link nguồn bài viết',          // Title
        'nhan_link_nguon_callback',     // Callback hiển thị
        'post',                         // Post type
        'normal',                       // Context
        'high'                          // Priority
    );
}
add_action('add_meta_boxes', 'nhan_add_link_nguon_metabox');

Bước 2 — Hiển thị ô nhập trong Meta Box

function nhan_link_nguon_callback($post) {
    // Tạo nonce bảo mật
    wp_nonce_field('nhan_save_link_nguon', 'nhan_link_nguon_nonce');

    // Lấy giá trị đã lưu (nếu có)
    $value = get_post_meta($post->ID, 'link-nguon', true);

    echo '<label for="nhan_link_nguon_field"><strong>URL bài viết gốc:</strong></label>';
    echo '<input type="url" id="nhan_link_nguon_field" name="nhan_link_nguon_field" value="' . esc_attr($value) . '" style="width:100%; margin-top:8px;" placeholder="https://example.com/bai-viet-goc" />';
}

Bước 3 — Lưu dữ liệu khi bấm Cập nhật / Đăng bài

function nhan_save_link_nguon_metabox($post_id) {

    // Kiểm tra nonce
    if (!isset($_POST['nhan_link_nguon_nonce']) ||
        !wp_verify_nonce($_POST['nhan_link_nguon_nonce'], 'nhan_save_link_nguon')) {
        return;
    }

    // Tránh autosave
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // Kiểm tra quyền
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }

    // Kiểm tra tồn tại field
    if (isset($_POST['nhan_link_nguon_field'])) {
        $link = esc_url_raw($_POST['nhan_link_nguon_field']);
        update_post_meta($post_id, 'link-nguon', $link);
    }
}
add_action('save_post', 'nhan_save_link_nguon_metabox');

Bước 4 — Hiển thị ra ngoài theme (front-end)

Trong single.php, content-single.php, hoặc template:

$link_nguon = get_post_meta(get_the_ID(), 'link-nguon', true);

if ($link_nguon) {
    echo '<p>Nguồn: <a href="' . esc_url($link_nguon) . '" target="_blank" rel="nofollow noopener">' . esc_html($link_nguon) . '</a></p>';
}

Vì sao cách này chuẩn hơn Custom Fields mặc định?

Custom Fields mặc định Meta Box tự tạo
Dễ bị ẩn Luôn hiển thị
Nhập sai key rất dễ Cố định key link-nguon
UI xấu, khó dùng UI rõ ràng
Không kiểm soát bảo mật Có nonce + sanitize
Không mở rộng được Có thể thêm nhiều field

Một số lưu ý quan trọng khi làm việc với custom field trong WordPress

Khi triển khai custom field trong WordPress, bạn cần chú ý đến vấn đề hiệu suất. Việc lạm dụng quá nhiều trường tùy chỉnh trong một trang có thể làm tăng số lượng truy vấn database, gây chậm trang web. Hãy luôn nhớ sử dụng các kỹ thuật caching hoặc chỉ lấy những dữ liệu thực sự cần thiết. Ngoài ra, việc đặt tên slug cho custom field trong WordPress nên theo một quy tắc nhất quán (ví dụ dùng tiền tố của riêng bạn như ‘kira_price’) để tránh xung đột với các plugin khác hoặc các bản cập nhật core của WordPress trong tương lai.

Cuối cùng, đừng quên vấn đề bảo mật. Khi hiển thị giá trị của custom field trong WordPress ra giao diện, hãy luôn sử dụng các hàm sanitize và escape như esc_html(), esc_attr() hoặc esc_url() để ngăn chặn các cuộc tấn công XSS. Một lập trình viên giỏi không chỉ là người biết tạo ra tính năng mà còn là người biết bảo vệ dữ liệu và người dùng của mình trước các nguy cơ tiềm ẩn trên không gian mạng.

Tổng kết

Hôm nay, chúng ta đã cùng nhau khám phá sâu về chức năng custom field trong WordPress, từ cách tạo thủ công đơn giản đến việc sử dụng plugin ACF chuyên nghiệp. Đây chính là chìa khóa để bạn mở ra cánh cửa sáng tạo, xây dựng nên những website có cấu trúc dữ liệu phức tạp và đáp ứng mọi yêu cầu kinh doanh.

Hy vọng rằng những kiến thức chuyên sâu này sẽ giúp lộ trình học tập và làm chủ WordPress của bạn trở nên dễ dàng và đầy thú vị hơn. Hãy bắt đầu áp dụng ngay custom field trong WordPress vào dự án tiếp theo của mình để thấy sự khác biệt kinh ngạc mà nó mang lại!

Giải đáp thắc mắc về Custom field trong WordPress từ A-Z

Custom field trong WordPress là gì?

Là tính năng cho phép bạn lưu trữ và hiển thị các thông tin bổ sung (metadata) ngoài các trường mặc định như tiêu đề hay nội dung bài viết.

Làm thế nào để bật khung Custom Fields mặc định?

Bạn vào ‘Tùy chọn’ (Preferences) trong trang soạn thảo, chọn mục ‘Bảng’ (Panels) và kích hoạt công tắc ‘Trường tùy chỉnh’ (Custom Fields).

Dữ liệu Custom Field được lưu ở đâu trong database?

Mọi thông tin về Custom field trong WordPress được lưu trữ một cách khoa học trong bảng wp_postmeta dưới dạng các cặp Key và Value.

Sử dụng hàm nào để hiển thị Custom Field bằng code?

Bạn sử dụng hàm get_post_meta() với cú pháp: get_post_meta(get_the_ID(), ‘ten_field’, true); để lấy dữ liệu hiển thị ra website.

Tại sao plugin ACF lại được ưa chuộng hơn cách làm thủ công?

Plugin ACF cung cấp giao diện nhập liệu trực quan, đa dạng kiểu dữ liệu (ảnh, ngày tháng, màu sắc) giúp quản lý metadata chuyên nghiệp hơn.

Mối quan hệ giữa Metabox và Custom Field là gì?

Custom Field là dữ liệu thô bên trong database, còn Metabox là giao diện người dùng giúp nhập và sửa đổi dữ liệu đó dễ dàng hơn.

Dùng nhiều Custom Field có gây chậm website không?

Việc lạm dụng quá nhiều trường có thể làm tăng số lượng truy vấn database, vì vậy bạn cần sử dụng thêm các kỹ thuật caching để tối ưu.

Làm sao để đảm bảo an toàn khi hiển thị Custom Field?

Hãy luôn sử dụng các hàm bảo mật như esc_html(), esc_attr() hoặc esc_url() khi xuất dữ liệu ra front-end để ngăn chặn tấn công XSS.

Bài trước Hướng dẫn custom post type trong wordpress từ a đến z Bài tiếp theo Custom taxonomy trong wordpress từ a đến z

Đá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
ĐT

Đỗ Anh Tuấn

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

5,0 /5

WordPress đúng là biến hình thành CMS thực thụ nhờ Custom Field và Custom Post Type. Bài viết viết rất có tâm, hình ảnh minh họa rõ ràng. Hóng thêm các bài hướng dẫn nâng cao về Repeater Field của team nhé!

Hoàng Minh Đức

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

5,0 /5

Kiến thức rất sâu sắc và bài bản. Đặc biệt là phần nhắc nhở về bảo mật XSS và dùng các hàm escape như esc_url. Rất ít bài hướng dẫn ở Việt Nam chú ý đến chi tiết bảo mật quan trọng này cho lập trình viên.

NN

Nguyễn Bích Ngọc

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

5,0 /5

Ad cho mình hỏi thêm chút, nếu mình muốn làm field chọn màu sắc (Color Picker) thì bản ACF miễn phí có hỗ trợ không hay bắt buộc phải mua bản Pro mới có tính năng này ạ?

VH

Vũ Văn Hùng

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

5,0 /5

Hướng dẫn cực kỳ dễ hiểu, nhất là đoạn code hiển thị ra front-end bằng hàm get_post_meta. Mình đã áp dụng thành công để hiển thị link nguồn cho blog cá nhân rồi, chạy mượt lắm!

ĐL

Đặng Thuỳ Linh

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

5,0 /5

Cái bảng so sánh giữa Custom Field mặc định và Meta Box tự tạo rất trực quan. Giờ mình mới hiểu tại sao các bên outsource hay tự code metabox riêng. Bài viết chất lượng quá!

PB

Phạm Gia Bảo

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

5,0 /5

Mình không biết nhiều về code nên thấy phần giới thiệu plugin ACF như cứu cánh vậy. Các bước hướng dẫn rất dễ theo dõi, mình đã tự tạo được nhóm thông tin sản phẩm cho shop rồi.

LN

Lê Hoàng Nam

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

5,0 /5

Thích nhất phần hướng dẫn tạo Metabox bằng code trong functions.php. Cách này nhìn chuyên nghiệp và an toàn hơn hẳn cho khách hàng khi mình bàn giao web, tránh việc họ lỡ tay xóa mất key. Cảm ơn tác giả!

TT

Trần Thị Thu Thảo

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

5,0 /5

Bài viết chi tiết quá ạ! Admin cho mình hỏi là nếu mình dùng quá nhiều trường ACF trên một trang (tầm 20-30 trường) thì có ảnh hưởng nhiều đến tốc độ load của website không? Mình đang định làm trang review phim giống ví dụ trong bài.

NT

Nguyễn Minh Tuấn

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

5,0 /5

Trước giờ mình toàn dùng post mặc định của WordPress, đọc xong bài này mới thấy Custom Field lợi hại thật. Cái ví dụ về web bán điện thoại rất thực tế, giúp mình hình dung rõ cách quản trị data chuyên nghiệp hơn hẳn.

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