Lập trình WordPress nâng cao: Taxonomy Tùy chỉnh (Custom Taxonomy)

Phong

By Phong

Đăng ngày Tháng 7 5, 2025

Custom Taxonomy là gì?

Taxonomy = hệ thống phân loại bài viết (giống như categorytag trong WordPress)

➡️ Bạn có thể tạo taxonomy riêng, ví dụ:

  • Loại sản phẩm (Cao cấp, Phổ thông)
  • Môn học (Toán, Lý, Hóa)
  • Thể loại phim (Hành động, Tình cảm, Kinh dị)
  • Trình độ khóa học (Cơ bản, Nâng cao)

Cách tạo Custom Taxonomy

Bạn sẽ dùng hàm register_taxonomy() để khai báo.

🧾 Ví dụ: Tạo taxonomy “Môn học” cho CPT “khoahoc”

Thêm vào functions.php:

function gfon_register_taxonomy_monhoc() {
    $labels = array(
        'name'              => 'Môn học',
        'singular_name'     => 'Môn học',
        'search_items'      => 'Tìm môn học',
        'all_items'         => 'Tất cả môn học',
        'edit_item'         => 'Chỉnh sửa môn học',
        'update_item'       => 'Cập nhật môn học',
        'add_new_item'      => 'Thêm môn học mới',
        'new_item_name'     => 'Tên môn học mới',
        'menu_name'         => 'Môn học',
    );

    $args = array(
        'hierarchical'      => true, // true = dạng cây như category, false = tag
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'rewrite'           => array('slug' => 'mon-hoc'),
        'show_in_rest'      => true,
    );

    register_taxonomy('monhoc', array('khoahoc'), $args);
}
add_action('init', 'gfon_register_taxonomy_monhoc');

Bây giờ khi bạn tạo bài viết loại “Khóa học”, bạn sẽ thấy có mục “Môn học” để chọn như danh mục.

Kiểm tra trên admin

  • Vào Khóa học → Thêm mới
  • Ở bên phải sẽ có hộp “Môn học”
  • Bạn có thể tạo các môn như: Toán, Lý, Hóa, v.v.

Hiển thị taxonomy ngoài giao diện

Trong single-khoahoc.php, thêm:

<?php
$terms = get_the_terms(get_the_ID(), 'monhoc');
if ($terms && !is_wp_error($terms)) {
    echo '<p><strong>Môn học:</strong> ';
    foreach ($terms as $term) {
        echo '<a href="' . get_term_link($term) . '">' . $term->name . '</a> ';
    }
    echo '</p>';
}
?>

Mã này sẽ hiển thị danh sách “Môn học” của khóa học hiện tại, có link ra trang lưu trữ từng môn.

Tùy chỉnh giao diện taxonomy

Tạo file taxonomy-monhoc.php trong theme để hiển thị danh sách bài thuộc mỗi môn:

<?php get_header(); ?>

<h1>Khóa học thuộc môn: <?php single_term_title(); ?></h1>

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php endwhile; else : ?>
    <p>Không có khóa học nào.</p>
<?php endif; ?>

<?php get_footer(); ?>

Mẹo nâng cao

Tính năngMẹo thực hiện
Tạo nhiều taxonomyGọi nhiều lần register_taxonomy()
Gắn taxonomy cho nhiều post typeTrong mảng thứ 2 của register_taxonomy(), thêm array('post', 'khoahoc')
Thêm ảnh cho taxonomyDùng plugin như ACF + termmeta

Tổng kết

Khái niệmNội dung
Custom TaxonomyTạo danh mục / thẻ riêng cho CPT
Hàm sử dụngregister_taxonomy()
Giao diện hiển thịtaxonomy-{slug}.php
Hiển thị term ra ngoàiDùng get_the_terms()get_term_link()
Gợi ý ứng dụngMôn học, thể loại, trình độ, nhãn hiệu, v.v.

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

[global_subscribe_form]

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.