ACF (Advanced Custom Fields) là plugin WordPress cho phép bạn tạo và quản lý các trường dữ liệu tùy chỉnh (custom fields) một cách trực quan. Thay vì phụ thuộc vào nội dung mặc định của WordPress, ACF mở rộng khả năng lưu trữ thông tin cho bài viết, trang, sản phẩm WooCommerce hay bất kỳ loại nội dung tùy chỉnh nào.

Bài viết này sẽ giải thích cách ACF hoạt động, các khái niệm cốt lõi như field group và location rules, các loại field phổ biến, cách hiển thị dữ liệu trong builder và code, cùng với ví dụ thực tế về dự án, sản phẩm và thông tin đội ngũ. Cuối cùng, bạn sẽ hiểu tại sao việc thiết kế cấu trúc dữ liệu trước khi tạo trường là yếu tố quyết định thành công của dự án.

ACF hoạt động như thế nào trong WordPress

WordPress mặc định chỉ cung cấp tiêu đề, nội dung, đoạn trích và một số trường cơ bản. Khi bạn cần lưu thêm thông tin như giá sản phẩm, diện tích dự án bất động sản, hoặc chức danh thành viên đội ngũ, bạn phải dùng custom fields.

ACF đơn giản hóa quy trình này bằng giao diện kéo-thả. Thay vì viết code PHP để đăng ký meta box, bạn tạo field group (nhóm trường), chọn location rules (quy tắc vị trí) để xác định nơi hiển thị, sau đó thêm các field cụ thể.

Giao diện tạo field group trong ACF với các trường dữ liệu được sắp xếp
Giao diện quản lý field group trong ACF cho phép tạo và sắp xếp trường dữ liệu mà không cần code

Dữ liệu ACF được lưu vào bảng wp_postmeta của WordPress dưới dạng key-value. Điều này có nghĩa là dữ liệu vẫn tồn tại ngay cả khi bạn tắt plugin, mặc dù cần code tùy chỉnh để hiển thị lại.

Field group và location rules: Nền tảng của ACF

Field group là gì

Field group là container chứa một hoặc nhiều trường dữ liệu có liên quan. Ví dụ: nhóm thông tin dự án bất động sản có thể bao gồm giá, diện tích, số phòng ngủ, hướng nhà, và hình ảnh 360 độ.

Mỗi field group có:

  • Tiêu đề: Tên nhóm hiển thị trong admin
  • Fields: Các trường dữ liệu cụ thể
  • Location rules: Điều kiện hiển thị nhóm
  • Settings: Tùy chọn như vị trí hiển thị (normal, side, advanced)

Location rules xác định nơi hiển thị

Location rules cho phép bạn kiểm soát chính xác nơi field group xuất hiện. Bạn có thể kết hợp nhiều điều kiện với logic AND/OR.

Điều kiện Ví dụ ứng dụng
Post type Chỉ hiển thị với Custom Post Type “Dự án”
Page template Chỉ với template “Landing Page”
Taxonomy term Chỉ khi chọn danh mục “Căn hộ cao cấp”
User role Chỉ admin mới thấy field cấu hình nâng cao
Post status Chỉ với bài viết đã xuất bản

Ví dụ thực tế: Bạn tạo field group “Thông số kỹ thuật” chỉ hiển thị khi Post type = Sản phẩm AND Taxonomy = Điện tử. Điều này tránh làm rối giao diện admin cho sản phẩm thuộc danh mục khác.

Cấu hình location rules trong ACF với nhiều điều kiện kết hợp
Location rules cho phép kiểm soát chính xác nơi field group xuất hiện thông qua nhiều điều kiện kết hợp

Các loại field phổ biến và ứng dụng thực tế

ACF cung cấp hơn 30 loại field. Dưới đây là những loại được sử dụng nhiều nhất trong dự án thực tế:

Loại field Dữ liệu lưu trữ Ví dụ ứng dụng
Text Chuỗi ngắn Tên dự án, mã sản phẩm
Textarea Chuỗi dài mô tả Giới thiệu ngắn, ghi chú
WYSIWYG HTML định dạng Mô tả chi tiết sản phẩm
Number Số nguyên/thập phân Giá, diện tích, năm xây dựng
Image ID attachment Ảnh đại diện, gallery
Gallery Mảng ID ảnh Thư viện hình dự án
Select Giá trị từ danh sách Trạng thái: Đang bán/Đã bán
True/False Boolean (0/1) Nổi bật trang chủ, còn hàng
Repeater Mảng lặp lại Danh sách tiện ích, đội ngũ
Flexible Content Layout động Trang landing với block tùy chọn
Relationship Mảng post ID Sản phẩm liên quan, dự án tương tự

Repeater field: Linh hoạt cho dữ liệu lặp lại

Repeater là field mạnh mẽ cho phép người dùng thêm nhiều hàng dữ liệu cùng cấu trúc. Ví dụ: danh sách thành viên đội ngũ, mỗi người có tên, chức danh, ảnh đại diện và mô tả.

Khi hiển thị, bạn dùng vòng lặp để duyệt qua từng hàng. Trong Bricks Builder, sử dụng element Query Loop với nguồn dữ liệu là Repeater field.

Flexible Content: Xây dựng layout động

Flexible Content cho phép biên tập viên chọn và sắp xếp các layout khác nhau theo thứ tự tùy ý. Mỗi layout là một nhóm field độc lập.

Ví dụ: Trang giới thiệu công ty có thể bao gồm các layout: Hero banner → Đội ngũ → Con số ấn tượng → Khách hàng nói về chúng tôi → CTA. Biên tập viên có thể thêm, xóa, hoặc đổi thứ tự mà không cần developer.

Ví dụ thực tế: Cấu trúc dữ liệu cho dự án bất động sản

Giả sử bạn xây dựng website cho công ty bất động sản. Mỗi dự án cần lưu trữ thông tin phức tạp mà WordPress mặc định không hỗ trợ.

Thiết kế cấu trúc trước khi tạo field

Trước khi mở ACF, bạn cần trả lời:

  • Dự án cần những thông tin gì?
  • Thông tin nào là bắt buộc, tùy chọn?
  • Cấu trúc nào tối ưu cho việc lọc và tìm kiếm?
  • Dữ liệu nào cần đồng bộ với hệ thống bên ngoài (CRM, ERP)?

Ví dụ cấu trúc cho Custom Post Type “Dự án”:

Field group: Thông tin cơ bản

  • Tên dự án (Text)
  • Chủ đầu tư (Text)
  • Địa chỉ (Text)
  • Tỉnh/Thành phố (Select – taxonomy hoặc custom)

Field group: Thông số kỹ thuật

  • Tổng diện tích (Number + đơn vị m²)
  • Số tòa nhà (Number)
  • Số căn hộ (Number)
  • Năm bàn giao (Number)
  • Pháp lý (Select: Sổ hồng/Sổ đỏ/Hợp đồng)

Field group: Tiện ích (Repeater)

  • Icon (Image/SVG)
  • Tên tiện ích (Text)
  • Mô tả (Textarea)

Field group: Mặt bằng (Gallery)

  • Hình ảnh mặt bằng các loại căn hộ

Field group: Vị trí

  • Bản đồ (Google Map field)
  • Mô tả vị trí (WYSIWYG)

Sơ đồ cấu trúc field group cho dự án bất động sản với các nhóm thông tin liên kết
Thiết kế cấu trúc dữ liệu trước khi tạo field giúp tránh việc chỉnh sửa lặp lại sau này

Cách hiển thị dữ liệu ACF trong builder và code

Hiển thị bằng Bricks Builder

Bricks Builder tích hợp native với ACF, cho phép bạn truy cập field mà không cần code.

Cách thiết lập:

  1. Tạo template cho Post type cần hiển thị
  2. Thêm element (Heading, Text, Image, v.v.)
  3. Trong Dynamic Data, chọn nguồn “ACF Field”
  4. Chọn tên field tương ứng

Ví dụ: Hiển thị giá dự án

  • Thêm element Heading
  • Dynamic Tags → ACF Field → Chọn field gia_du_an
  • Format: {field} tỷ VNĐ → kết quả: “5.2 tỷ VNĐ”

Hiển thị Repeater với Query Loop:

  • Thêm element Container làm wrapper
  • Bật Query Loop
  • Query Type: ACF Repeater Field
  • Chọn tên repeater (ví dụ: tien_ich)
  • Bên trong, các element con truy cập sub-field bằng {acf_sub_field:tien_ich_icon}

Xử lý điều kiện (Conditional Display):
Bricks cho phép ẩn/hiện element dựa trên giá trị ACF. Ví dụ: chỉ hiển thị badge “Đang mở bán” khi field trang_thai = “mo_ban”.

Hiển thị bằng code PHP

Khi cần tùy chỉnh cao hoặc tích hợp vào theme tự viết, sử dụng các hàm ACF:

// Lấy giá trị đơn giản
$gia = get_field('gia_du_an');
echo number_format($gia, 1) . ' tỷ VNĐ';

// Lấy ảnh với kích thước cụ thể
$anh_dai_dien = get_field('anh_du_an');
if ($anh_dai_dien) {
    echo wp_get_attachment_image($anh_dai_dien['ID'], 'large');
}

// Lặp qua Repeater
if (have_rows('tien_ich')) {
    while (have_rows('tien_ich')) {
        the_row();
        $ten = get_sub_field('ten_tien_ich');
        $icon = get_sub_field('icon_tien_ich');
        // Hiển thị...
    }
}

// Lấy field từ option page
$hotline = get_field('hotline', 'option');

Lưu ý hiệu suất: get_field() thực hiện query database. Trong vòng lặp lớn, dùng get_fields() để lấy tất cả field một lần, hoặc cache kết quả.

ACF kết hợp với Bricks Builder: Workflow tối ưu

Sự kết hợp ACF + Bricks Builder tạo ra workflow mạnh mẽ cho việc xây dựng website WordPress phức tạp:

Giai đoạn Công việc Công cụ
1. Thiết kế dữ liệu Xác định cấu trúc field, loại dữ liệu, quan hệ Bảng, sơ đồ, Notion
2. Tạo field Xây dựng field group, location rules ACF Pro
3. Nhập nội dung mẫu Thêm 3-5 bài viết với đầy đủ dữ liệu WordPress admin
4. Thiết kế giao diện Tạo template, binding dữ liệu động Bricks Builder
5. Tinh chỉnh Conditional display, responsive, animation Bricks + CSS tùy chỉnh

Ưu điểm của workflow này:

  • Tách biệt dữ liệu và giao diện: Thay đổi design không ảnh hưởng dữ liệu
  • Dễ bảo trì: Khách hàng tự cập nhật nội dung qua field quen thuộc
  • Mở rộng linh hoạt: Thêm field mới không phá vỡ cấu trúc cũ
  • Tái sử dụng: Export field group dùng cho dự án khác

Khi nào nên sử dụng ACF

ACF phù hợp khi:

  • Website có nhiều loại nội dung khác nhau cần cấu trúc riêng (dự án, sản phẩm, đội ngũ, tuyển dụng…)
  • Cần giao diện nhập liệu thân thiện cho khách hàng/không chuyên kỹ thuật
  • Dữ liệu cần hiển thị đồng nhất trên nhiều vị trí (trang chi tiết, trang danh sách, trang chủ)
  • Có kế hoạch tích hợp với hệ thống bên ngoài qua API

ACF không phải lựa chọn tốt nhất khi:

  • Chỉ cần thêm 1-2 trường đơn giản → dùng custom fields mặc định của WordPress
  • Dữ liệu phức tạp với quan hệ nhiều-nhiều → xem xét Custom Post Type với taxonomy
  • Yêu cầu tìm kiếm/lọc phức tạp trên nhiều field → cần giải pháp như FacetWP hoặc ElasticSearch

Các câu hỏi thường gặp

ACF miễn phí và Pro khác nhau thế nào?

Bản miễn phí cung cấp các field cơ bản: Text, Textarea, Image, Select, v.v. ACF Pro ($49/năm) bổ sung Repeater, Flexible Content, Gallery, Clone field, và Option Page. Với dự án thực tế, Pro là lựa chọn cần thiết.

Dữ liệu ACF có bị mất khi gỡ plugin không?

Không. Dữ liệu lưu trong wp_postmeta vẫn tồn tại. Tuy nhiên, cấu trúc field group sẽ mất nếu không export trước. Để khôi phục hiển thị, bạn cần tái tạo field group hoặc dùng code tùy chỉnh để đọc meta trực tiếp.

Có nên dùng ACF cho website có hàng nghìn bài viết không?

Có, với lưu ý về hiệu suất. Tránh dùng quá nhiều field cho mỗi bài viết. Nếu cần query phức tạp (ví dụ: tìm sản phẩm có giá từ X đến Y), cân nhắc lưu dữ liệu vào custom table hoặc dùng plugin tối ưu query như Meta Box hoặc giải pháp headless CMS.

ACF có hoạt động với WooCommerce không?

Có. ACF thêm field cho sản phẩm WooCommerce, nhưng cần lưu ý: dữ liệu ACF không tự động đồng bộ với hệ thống biến thể, giỏ hàng, thanh toán của WooCommerce. Với dữ liệu ảnh hưởng giá hoặc tồn kho, nên dùng custom product attributes của WooCommerce thay vì ACF.

Làm sao di chuyển field group từ local sang production?

ACC Pro hỗ trợ Local JSON: field group được lưu dưới dạng file JSON trong theme, tự động đồng bộ khi deploy. Đây là cách tốt nhất để quản lý field trong môi trường development có version control (Git).

Kết luận

ACF là công cụ không thể thiếu khi xây dựng website WordPress với cấu trúc dữ liệu phức tạp. Thành công với ACF không nằm ở việc biết tạo nhiều loại field, mà ở khả năng thiết kế cấu trúc dữ liệu phù hợp trước khi bắt tay vào thực hiện.

Kết hợp ACF với Bricks Builder tạo ra workflow hiệu quả: bạn tập trung vào kiến trúc thông tin, khách hàng dễ dàng quản lý nội dung, và giao diện hiển thị linh hoạt theo yêu cầu thiết kế.

Nếu bạn đang lên kế hoạch cho dự án WordPress tiếp theo, hãy dành thời gian vẽ sơ đồ cấu trúc dữ liệu trước. Việc này sẽ tiết kiệm hàng giờ chỉnh sửa sau này và tạo nền tảng vững chắc cho việc mở rộng website trong tương lai.