Custom taxonomy là một trong những khái niệm quan trọng nhất mà bất kỳ lập trình viên WordPress nào cũng cần nắm vững để xây dựng những website chuyên nghiệp. Thông thường, khi bắt đầu với WordPress, chúng ta chỉ quen thuộc với Category (Chuyên mục) và Tag (Thẻ) để phân loại bài viết. Tuy nhiên, khi dự án trở nên phức tạp hơn, các phân loại mặc định này không còn đủ linh hoạt để đáp ứng nhu cầu quản lý dữ liệu theo các tiêu chí riêng biệt.
Việc hiểu rõ và vận dụng thành thạo custom taxonomy không chỉ giúp cấu trúc website của bạn trở nên khoa học hơn mà còn hỗ trợ đắc lực cho SEO và trải nghiệm người dùng. Trong bài viết chuyên sâu này, chúng ta sẽ cùng khám phá từ những định nghĩa cơ bản nhất cho đến các kỹ thuật lập trình nâng cao để làm chủ hoàn toàn hệ thống phân loại tùy chỉnh trong WordPress.
Custom taxonomy trong WordPress là gì?
Để hiểu về custom taxonomy, trước tiên chúng ta cần nắm rõ khái niệm Taxonomy. Trong ngôn ngữ sinh học, taxonomy là một phương pháp phân loại các sinh vật sống. Trong thế giới WordPress, taxonomy là cơ chế cho phép chúng ta nhóm các bài viết (post), trang (page) hoặc các custom post type lại với nhau theo một tiêu chí nhất định.
WordPress cung cấp sẵn hai loại taxonomy phổ biến nhất là Category và Tag. Custom taxonomy chính là các phân loại do người dùng tự định nghĩa thêm để phục vụ các mục đích riêng. Ví dụ, nếu bạn đang xây dựng một website về phim ảnh, bạn có thể tạo các custom taxonomy như “Đạo diễn”, “Diễn viên”, hoặc “Năm phát hành”. Nếu làm web bất động sản, bạn có thể cần taxonomy về “Khu vực”, “Mức giá” hay “Loại hình dự án”.

Tại sao bạn nên sử dụng custom taxonomy?
Việc lạm dụng chuyên mục (Category) cho tất cả mọi thứ có thể khiến cấu trúc website trở nên rối rắm. Khi bạn sử dụng custom taxonomy, bạn đang tách biệt các luồng dữ liệu khác nhau, giúp WordPress hiểu rõ hơn về ngữ cảnh của nội dung. Điều này mang lại lợi ích cực lớn cho SEO vì công cụ tìm kiếm có thể xác định được các mối quan hệ logic giữa các bài viết.
Bên cạnh đó, việc sử dụng custom taxonomy giúp người dùng dễ dàng lọc và tìm kiếm thông tin. Thay vì phải tìm một bộ phim trong một danh sách chuyên mục hỗn độn, họ có thể vào phần “Đạo diễn” để xem tất cả tác phẩm của người đó. Sự rõ ràng này giúp giảm tỷ lệ thoát trang và tăng thời gian onsite của người dùng trên website của bạn.
Cách tạo custom taxonomy bằng file functions.php
Phương pháp chuyên nghiệp nhất để tạo custom taxonomy là sử dụng code trong file functions.php của theme. Điều này giúp bạn kiểm soát hoàn toàn các tham số và không làm nặng website bởi các plugin không cần thiết. Để thực hiện, chúng ta sử dụng hàm register_taxonomy() của WordPress.
Cấu trúc hàm register_taxonomy
Dưới đây là một ví dụ cụ thể về cách tạo một custom taxonomy có tên là “Địa điểm” cho các bài viết thông thường. Bạn hãy copy đoạn code này và dán vào cuối file functions.php của mình:
function location_custom_taxonomy() {
$labels = array(
'name' => 'Địa điểm',
'singular' => 'Địa điểm',
'menu_name' => 'Địa điểm'
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
);
register_taxonomy('dia-diem', 'post', $args);
}
add_action( 'init', 'location_custom_taxonomy', 0 );
Giải thích các tham số quan trọng
Trong đoạn code trên, có một vài tham số mà bạn cần đặc biệt lưu ý để tùy chỉnh theo ý muốn. Đầu tiên là tham số hierarchical. Nếu bạn đặt giá trị là true, taxonomy sẽ hoạt động giống như Category (có phân cấp cha – con). Nếu đặt là false, nó sẽ hoạt động giống như Tag (không có phân cấp).
- hierarchical tham số có thể nhận 2 giá trị, nếu true thì chức năng tương tư chuyên mục, còn false thì chức năng tương tự thẻ
- Hàm register_taxonomy nhận 3 tham số
- ‘dia-diem’ Đây là slug của taxonomy sau này dùng nó để get dữ liệu. Đặt tên tùy thích, viết liền không dấu
- ‘post’ đây là post type hiển thị taxonomy này. Ví dụ bạn muốn tạo taxonomy cho sản phẩm thì chổ này phải điền là ‘san-pham’ nha
- $args là tham số khai báo phía trên

Tạo custom taxonomy đơn giản bằng plugin
Nếu bạn không quá rành về code hoặc muốn tiết kiệm thời gian, việc sử dụng plugin là một lựa chọn tuyệt vời. Có nhiều plugin mạnh mẽ hỗ trợ việc này mà không cần động vào một dòng code nào. Một trong những cái tên phổ biến nhất là Custom Post Type UI (CPT UI), nó cung cấp giao diện trực quan để bạn điền các labels và cấu hình args chỉ bằng cách click chuột.
- Custom Post Type UI: Dễ sử dụng, phổ biến nhất hiện nay.
- Pods – Custom Content Types and Fields: Mạnh mẽ, cho phép tạo cả post type, taxonomy và custom fields.
- MB Custom Taxonomy: Một phần của hệ sinh thái Meta Box, cực kỳ nhẹ và chuyên nghiệp.
Tuy nhiên, hãy nhớ rằng việc cài quá nhiều plugin có thể ảnh hưởng đến tốc độ của website. Bạn nên cân nhắc kỹ giữa tính tiện lợi và hiệu năng lâu dài. Bạn cũng có thể tham khảo thêm Tài liệu chính thức từ WordPress để hiểu sâu hơn về cách các plugin này vận hành phía sau hậu trường.
Cách hiển thị danh sách custom taxonomy lên website
Sau khi đã tạo và gán các giá trị cho bài viết, bước tiếp theo là hiển thị chúng ra ngoài giao diện cho người dùng thấy. Có hai trường hợp phổ biến: hiển thị danh sách tất cả các hạng mục trong taxonomy hoặc hiển thị các hạng mục mà một bài viết cụ thể đang thuộc về.
Để lấy danh sách tất cả các thuật ngữ (terms) trong một custom taxonomy, chúng ta sử dụng hàm get_terms. Ví dụ sau đây sẽ lấy toàn bộ danh sách các địa điểm và hiển thị dưới dạng một danh sách không thứ tự:
<?php $args = array(
'hide_empty' => 0,
'taxonomy' => 'danh-muc',
);
$cates = get_terms( $args );
foreach ( $cates as $cate ) { ?>
<li>
<a href="<?php echo get_term_link($cate->slug, 'danh-muc'); ?>"><?php echo $cate->name; ?></a>
</li>
<?php } ?>

Truy vấn bài viết theo custom taxonomy chuyên sâu
Một yêu cầu rất thường gặp là lọc các bài viết thuộc về một taxonomy cụ thể. Để làm được điều này, chúng ta cần sử dụng mảng tax_query trong đối tượng WP_Query. Đây là kỹ thuật giúp bạn tạo ra những trang kết quả tìm kiếm hoặc các khối nội dung liên quan cực kỳ mạnh mẽ.
Giả sử bạn muốn lấy 5 bài viết mới nhất thuộc địa điểm có slug là ‘ha-noi’, đoạn code sẽ như sau:
<?php
$args = array(
'posts_per_page' => -1,
'post_type' => 'post',
'dia-diem' => 'ha-noi'
);
$the_query = new WP_Query( $args );
?>
<?php if( $the_query->have_posts() ): ?>
<?php while( $the_query->have_posts() ) : $the_query->the_post(); ?>
// Thông tin cần lấy của 1 bài viết
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
Kỹ thuật này cho phép bạn kết hợp nhiều taxonomy khác nhau cùng một lúc bằng cách sử dụng tham số ‘relation’ (AND hoặc OR). Điều này mở ra khả năng lọc dữ liệu vô hạn cho các website có cấu trúc phức tạp.
Tổng kết về custom taxonomy
Việc làm chủ custom taxonomy là bước ngoặt giúp bạn chuyển từ một người dùng WordPress cơ bản sang một nhà phát triển theme chuyên nghiệp. Nó không chỉ đơn thuần là việc phân loại bài viết, mà còn là tư duy về kiến trúc thông tin và tối ưu hóa trải nghiệm người dùng cuối. Bằng cách kết hợp linh hoạt giữa code và plugin, bạn có thể biến WordPress thành một hệ quản trị nội dung (CMS) cực kỳ mạnh mẽ cho bất kỳ loại hình dự án nào.
Hy vọng rằng qua bài viết này, bạn đã tự tin hơn trong việc triển khai custom taxonomy cho các dự án của mình. Hãy bắt đầu từ những ví dụ đơn giản nhất và dần dần nâng cấp lên các truy vấn phức tạp để cảm nhận sức mạnh thực sự mà WordPress mang lại. Chúc các bạn thành công trên con đường chinh phục lập trình WordPress!
Những câu hỏi thường gặp về Custom Taxonomy trong WordPress
Custom taxonomy trong WordPress là gì?
Đây là cơ chế cho phép bạn tự định nghĩa các phân loại mới để nhóm bài viết hoặc sản phẩm theo tiêu chí riêng, thay vì chỉ dùng Chuyên mục (Category) và Thẻ (Tag) mặc định.
Sử dụng custom taxonomy có lợi ích gì cho SEO?
Nó giúp cấu trúc website rõ ràng, tạo ra các mối quan hệ logic giữa các nội dung, giúp công cụ tìm kiếm hiểu ngữ cảnh tốt hơn và cải thiện trải nghiệm điều hướng của người dùng.
Làm thế nào để tạo custom taxonomy mà không cần lập trình?
Bạn có thể sử dụng các plugin phổ biến như Custom Post Type UI (CPT UI), Pods hoặc MB Custom Taxonomy để tạo nhanh chóng thông qua giao diện trực quan.
Sự khác biệt giữa taxonomy dạng 'hierarchical' và không 'hierarchical' là gì?
Nếu hierarchical là ‘true’, taxonomy sẽ có phân cấp cha-con giống như Chuyên mục. Nếu là ‘false’, nó sẽ hoạt động độc lập và không phân cấp tương tự như Thẻ.
Hàm nào được sử dụng để đăng ký custom taxonomy bằng code?
Bạn sử dụng hàm register_taxonomy() trong file functions.php của theme và móc nó vào hook ‘init’ để WordPress ghi nhận phân loại mới.
Tôi có thể gán custom taxonomy cho nhiều loại bài viết khác nhau không?
Có, trong hàm register_taxonomy, tham số thứ hai cho phép bạn truyền vào một mảng chứa danh sách các post type (như ‘post’, ‘page’, ‘san-pham’) mà bạn muốn áp dụng.
Làm cách nào để hiển thị danh sách các hạng mục taxonomy ra ngoài giao diện?
Bạn sử dụng hàm get_terms() để lấy danh sách các thuật ngữ (terms) của taxonomy đó, sau đó dùng vòng lặp để hiển thị tên và liên kết tương ứng.
Làm sao để lọc bài viết theo custom taxonomy trong WordPress?
Bạn cần sử dụng tham số ‘tax_query’ khi khởi tạo WP_Query. Điều này cho phép bạn truy vấn các bài viết thuộc về một hoặc nhiều hạng mục cụ thể trong taxonomy.