Ngoài “Bài viết” (Post) và “Trang” (Page) mặc định, WordPress cho phép tạo thêm các loại nội dung riêng gọi là Custom Post Type (CPT) — hữu ích khi website cần quản lý dữ liệu có cấu trúc khác biệt.
Custom Post Type là gì?
Là một loại nội dung tự định nghĩa, tách biệt khỏi Post/Page mặc định, có bộ trường dữ liệu và giao diện quản lý riêng trong wp-admin. Ví dụ: “Sản phẩm” (WooCommerce dùng CPT product), “Dự án”, “Nhân viên”, “Bất động sản”.
Khi nào cần dùng CPT?
- Nội dung có cấu trúc rõ ràng, khác hẳn bài blog thông thường (ví dụ: listing bất động sản với giá, diện tích, vị trí).
- Cần trang danh sách/lọc riêng biệt với blog chính (ví dụ trang “Dự án” tách khỏi trang “Tin tức”).
- Muốn URL và cấu trúc SEO riêng cho loại nội dung đó (ví dụ
/du-an/ten-du-an/thay vì gộp chung/blog/).
Cách tạo CPT không cần code
Plugin Custom Post Type UI (CPT UI) cho phép tạo CPT qua giao diện, không cần biết PHP. Kết hợp thêm Advanced Custom Fields (ACF) để thêm các trường dữ liệu tuỳ chỉnh (giá, diện tích, số phòng…) cho từng CPT.
Cách tạo CPT bằng code (cho ai biết PHP)
function tao_cpt_du_an() {
register_post_type('du_an', [
'labels' => ['name' => 'Dự án'],
'public' => true,
'has_archive' => true,
'rewrite' => ['slug' => 'du-an'],
'supports' => ['title', 'editor', 'thumbnail'],
]);
}
add_action('init', 'tao_cpt_du_an');
Nên đặt đoạn code này trong một plugin riêng (không phải trong theme) để CPT không bị mất nếu sau này đổi theme.
Đừng tạo CPT cho mọi thứ — nếu nội dung không cần cấu trúc riêng biệt (ví dụ chỉ là bài viết blog thông thường), dùng category/tag trên Post mặc định là đủ và đơn giản hơn nhiều.
Câu hỏi thường gặp
CPT có ảnh hưởng tốc độ website không?
Bản thân CPT không làm chậm site đáng kể — ảnh hưởng chính đến từ số lượng bản ghi và độ phức tạp truy vấn, tương tự như Post thông thường với lượng dữ liệu lớn.
WooCommerce có phải là CPT không?
Đúng — “Sản phẩm” trong WooCommerce chính là một Custom Post Type (product) được plugin đăng ký sẵn, kèm theo các trường dữ liệu riêng (giá, tồn kho, thuộc tính).
Xoá plugin CPT UI có mất dữ liệu đã tạo không?
Dữ liệu bài viết trong database vẫn còn, nhưng CPT sẽ không còn hiển thị trong wp-admin vì không được đăng ký nữa — nên cài lại plugin hoặc chuyển sang đăng ký CPT bằng code nếu muốn gỡ phụ thuộc plugin.