Menu

Custom taxonomy trong wordpress từ a đến z

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

Custom taxonomy giúp tổ chức nội dung website một cách khoa học và logic hơn - Custom taxonomy trong wordpress từ a đến z
Custom taxonomy giúp tổ chức nội dung website một cách khoa học và logic hơ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
Sử dụng hàm register_taxonomy là cách chuẩn nhất để tạo phân loại tùy chỉnh - Custom taxonomy trong wordpress từ a đến z
Sử dụng hàm register_taxonomy là cách chuẩn nhất để tạo phân loại tùy chỉnh

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.

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 } ?>

Hiển thị custom taxonomy giúp người dùng điều hướng website dễ dàng hơn - Custom taxonomy trong wordpress từ a đến z
Hiển thị custom taxonomy giúp người dùng điều hướng website dễ dàng hơn

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.

Bài trước Custom field trong wordpress và Metabox Bài tiếp theo Hướng dẫn custom term field trong wordpress

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

Ngô Gia Bách

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

5,0 /5

Quá đầy đủ từ lý thuyết đến thực hành. Đặc biệt là đoạn code mẫu tax_query để lọc bài viết theo slug 'ha-noi', mình copy vào trang chủ dùng được ngay. Hy vọng ad sẽ có thêm nhiều bài viết về WP_Query nâng cao như thế này nữa.

PH

Phan Thanh Hải

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

5,0 /5

Bài viết hay, hình ảnh minh họa trực quan. Rất thích cách bạn phân tích về việc giảm tỷ lệ thoát trang nhờ việc giúp người dùng dễ dàng lọc thông tin qua các Taxonomy riêng biệt như Đạo diễn hay Diễn viên. Tư duy UX rất tốt!

HT

Hoàng Anh Tuấn

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

5,0 /5

Cho mình hỏi xíu, nếu mình dùng plugin MB Custom Taxonomy của hệ sinh thái Meta Box thì nó có khác biệt nhiều về hiệu năng so với việc viết code tay không ad? Mình đang cân nhắc giữa 2 cách này cho dự án lớn.

VT

Vũ Đình Trọng

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

5,0 /5

Hướng dẫn hiển thị danh sách bằng hàm get_terms rất rõ ràng. Mình đã thử copy đoạn code vào template và chạy mượt luôn. Cảm ơn bạn đã chia sẻ kiến thức chuyên sâu này!

ĐL

Đỗ Mỹ Linh

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

5,0 /5

Website của mình đang bị rối vì dùng quá nhiều chuyên mục (Category). Đọc bài này mới nhận ra Custom Taxonomy chính là giải pháp để tổ chức lại nội dung cho khoa học hơn. Đặc biệt là phần tối ưu SEO, mình sẽ áp dụng ngay cho dự án tuần tới.

PB

Phạm Quốc Bảo

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

5,0 /5

Mình không chuyên code nên hay dùng CPT UI cho nhanh. Nhưng công nhận đọc bài này xong thấy việc tự chèn code vào functions.php giúp website nhẹ hơn hẳn. Chắc phải tập tành viết code theo hướng dẫn của Kiraapp để tối ưu tốc độ load trang thôi.

NN

Nguyễn Văn Nam

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

5,0 /5

Đúng thứ mình đang tìm! Phần giải thích về tham số hierarchical là cái mình hay quên nhất. Trước mình toàn để mặc định nên nó cứ ra kiểu tag, giờ mới biết chỉnh về true để nó có phân cấp cha con như chuyên mục bài viết. Rất hữu ích!

LT

Lê Thị Thu Thủy

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

5,0 /5

Ad cho mình hỏi một chút, nếu mình muốn gộp cả 'Địa điểm' và 'Mức giá' vào cùng một truy vấn WP_Query để lọc bài viết như đoạn code cuối bài thì dùng tham số relation là AND hay OR sẽ tối ưu hơn cho website bất động sản ạ?

TH

Trần Minh Hoàng

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

5,0 /5

Bài viết rất chi tiết và đúng trọng tâm! Trước giờ mình cứ lúng túng giữa Category và Taxonomy, nhờ đoạn code mẫu register_taxonomy mà mình tự tạo được phân loại 'Dự án' cho web công ty rồi. Cảm ơn ad nhé, phần giải thích các tham số cực kỳ dễ hiểu.

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