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.

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
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
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ị

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

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.