Đăng nhập

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

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.

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