Khi xây dựng website WordPress, việc tổ chức nội dung khoa học giúp quản lý và hiển thị dữ liệu hiệu quả. Mặc định, WordPress cung cấp Post Type (bài viết, trang) và Taxonomy (danh mục, thẻ). Tuy nhiên, nếu muốn nhóm nội dung theo một kiểu dữ liệu riêng, bạn có thể sử dụng Custom Post Type làm Taxonomy.
Bài viết này sẽ hướng dẫn bạn cách sử dụng Custom Post Type (CPT) như một Taxonomy để nhóm các bài viết theo cách linh hoạt hơn.
Khi phát triển một trang web bằng WordPress, hệ thống quản lý nội dung (CMS) này cung cấp sẵn hai kiểu dữ liệu chính là Post Types (các loại nội dung) và Taxonomies (các nhóm phân loại). Trong đó:
Post Type là loại nội dung, ví dụ như Bài viết (Post), Trang (Page) hay Sản phẩm (Product).
Taxonomy là phương thức để nhóm nội dung theo một cấu trúc cụ thể, chẳng hạn như Danh mục (Category) hoặc Thẻ (Tag).
Mặc định, WordPress sử dụng hai taxonomy chính là:
Categories (Danh mục): Phân cấp dạng cây (có danh mục cha – con).
Tags (Thẻ): Dạng từ khóa không có phân cấp.
Tuy nhiên, đôi khi bạn sẽ muốn có một hệ thống phân loại riêng biệt, ví dụ như nhóm sản phẩm theo thương hiệu, nhóm khóa học theo giảng viên, hoặc nhóm bài viết theo tác giả. Trong trường hợp này, bạn cần tạo một Custom Post Type (CPT) và sử dụng nó làm Taxonomy.
Giả sử bạn đang xây dựng một website bán sách. Bạn có thể tạo Custom Post Type "Sách", trong đó mỗi cuốn sách sẽ có các thuộc tính như tiêu đề, mô tả, ảnh đại diện. Tuy nhiên, bạn cũng cần phân loại sách theo Thể loại, chẳng hạn như "Tiểu thuyết", "Giáo trình", "Khoa học viễn tưởng".
Nếu chỉ sử dụng Categories, bạn sẽ gặp phải hạn chế vì Category thuộc về Post, không phù hợp để phân loại riêng cho "Sách". Trong trường hợp này, bạn có thể dùng một Custom Post Type khác (ví dụ: "Thể loại Sách") làm Taxonomy cho "Sách".
Việc sử dụng CPT làm Taxonomy không chỉ giúp quản lý nội dung dễ dàng hơn mà còn mang lại lợi ích SEO:
Tạo URL thân thiện với SEO:
Ví dụ, thay vì có URL:
bashCopyEdit
example.com/category/van-hoc
Bạn có thể tạo URL dạng:
bashCopyEdit
example.com/book-genre/van-hoc
Điều này giúp Google hiểu rõ hơn về nội dung trang web.
Cấu trúc dữ liệu tốt hơn:
Khi Google quét trang web, nó sẽ nhận diện được mỗi cuốn sách thuộc về một nhóm cụ thể, giúp hiển thị tốt hơn trên kết quả tìm kiếm.
Trải nghiệm người dùng tốt hơn:
Người dùng có thể duyệt sách theo từng thể loại cụ thể, giúp họ dễ dàng tìm thấy nội dung mong muốn.
Sử dụng CPT làm Taxonomy cho phép bạn mở rộng website theo nhu cầu riêng:
Có thể kết hợp với Advanced Custom Fields (ACF) để bổ sung trường dữ liệu cho từng loại nội dung.
Dễ dàng sử dụng trong truy vấn dữ liệu với WP_Query.
Có thể tạo trang riêng cho từng nhóm nội dung bằng cách chỉnh sửa template.
Trước tiên, chúng ta cần tạo Custom Post Type "Sách" bằng cách thêm đoạn code sau vào file functions.php:
phpCopyEdit
function create_custom_post_type() { register_post_type('book', array( 'labels' => array( 'name' => 'Sách', 'singular_name' => 'Sách' ), 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'books'), 'supports' => array('title', 'editor', 'thumbnail') )); } add_action('init', 'create_custom_post_type');
Lệnh trên sẽ tạo một post type mới có tên "Sách", cho phép thêm, chỉnh sửa và hiển thị danh sách sách trên website.
Tiếp theo, ta cần tạo một Taxonomy "Thể loại Sách" để nhóm các cuốn sách theo thể loại. Chèn đoạn code này vào functions.php:
phpCopyEdit
function create_book_taxonomy() { register_taxonomy('book_genre', 'book', array( 'labels' => array( 'name' => 'Thể loại sách', 'singular_name' => 'Thể loại sách' ), 'hierarchical' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array('slug' => 'book-genre'), )); } add_action('init', 'create_book_taxonomy');
Code trên giúp biến "book_genre" thành một taxonomy có cấu trúc phân cấp (giống Category), giúp nhóm sách theo từng thể loại như "Văn học", "Giáo trình", "Lịch sử".
Để hiển thị danh sách sách theo từng thể loại, ta sử dụng WP_Query như sau:
phpCopyEdit
$args = array( 'post_type' => 'book', 'tax_query' => array( array( 'taxonomy' => 'book_genre', 'field' => 'slug', 'terms' => 'van-hoc' ), ), ); $query = new WP_Query($args); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); the_title('<h2>', '</h2>'); } } wp_reset_postdata();
Lệnh trên sẽ hiển thị danh sách sách thuộc thể loại "Văn học".
Bạn cũng có thể tạo một template riêng cho từng thể loại bằng cách tạo file taxonomy-book_genre.php trong thư mục theme, sau đó sử dụng vòng lặp WordPress để hiển thị dữ liệu.
Để hiển thị danh sách tất cả thể loại sách trên một trang riêng, ta có thể dùng đoạn code sau trong một template tùy chỉnh:
phpCopyEdit
$terms = get_terms(array( 'taxonomy' => 'book_genre', 'hide_empty' => false, )); if (!empty($terms) && !is_wp_error($terms)) { foreach ($terms as $term) { echo '<a href="' . get_term_link($term) . '">' . $term->name . '</a><br>'; } }
Code này sẽ tạo danh sách tất cả thể loại sách với liên kết tương ứng.
Đầu tiên, bạn cần đăng ký một Custom Post Type bằng cách chèn đoạn mã sau vào file functions.php:
phpCopyEdit
function create_custom_post_type() { register_post_type('book', array( 'labels' => array( 'name' => 'Sách', 'singular_name' => 'Sách' ), 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'books'), 'supports' => array('title', 'editor', 'thumbnail') )); } add_action('init', 'create_custom_post_type');
Code này tạo CPT "Sách", cho phép hiển thị danh sách sách trên website.
Tiếp theo, ta sử dụng register_taxonomy() để biến CPT thành một dạng Taxonomy:
phpCopyEdit
function create_book_taxonomy() { register_taxonomy('book_genre', 'book', array( 'labels' => array( 'name' => 'Thể loại sách', 'singular_name' => 'Thể loại sách' ), 'hierarchical' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array('slug' => 'book-genre'), )); } add_action('init', 'create_book_taxonomy');
Lệnh trên giúp "book_genre" trở thành Taxonomy của "Sách", cho phép phân loại sách theo thể loại.
Bạn có thể hiển thị danh sách sách theo thể loại bằng cách sử dụng WP_Query:
phpCopyEdit
$args = array( 'post_type' => 'book', 'tax_query' => array( array( 'taxonomy' => 'book_genre', 'field' => 'slug', 'terms' => 'van-hoc' ), ), ); $query = new WP_Query($args); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); the_title('<h2>', '</h2>'); } } wp_reset_postdata();
Code này giúp hiển thị danh sách sách thuộc thể loại "Văn học".
Việc sử dụng Custom Post Type làm Taxonomy giúp bạn quản lý nội dung WordPress khoa học hơn. Hy vọng hướng dẫn trên giúp bạn tạo được hệ thống phân loại nội dung linh hoạt, phù hợp với nhu cầu của website. Nếu bạn muốn mở rộng thêm tính năng, có thể kết hợp với plugin như CPT UI hoặc ACF để quản lý trực quan hơn!
Cùng Tempi khám phá ngay nhé!