
Hướng dẫn Custom Taxonomy trong WordPress

Custom Taxonomy sẽ giúp bạn tạo ra nhiều tùy chọn khác nhau. Thông thường taxonomy có sẵn là danh mục (category) và thẻ (tag), nhưng bây giờ bạn muốn thêm một loại nào đó tương tự nhưng để làm nhiệm vụ khác thì custom taxonomy sẽ giúp bạn thực hiện công việc này. Bài viết dưới đây mình sẽ giới thiệu đến bạn cách tạo ra một taxonomy để lưu trữ những thông tin bổ sung mà không cần phải lưu chung với danh mục hoặc tag.
Cấu trúc hàm tạo Taxonomy
Taxonomy sử dụng hook init để móc một hàm chưa hàm register_taxonomy(). Với hàm register_taxonomy chúng ta có 2 thông số là $label và $arr. tương tự như tạo custom post type nhưng tạo Taxonomy thì dễ hơn nhiều. Cấu trúc hàm, và hook đầy đủ như sau:
function custom_taxonomy() {
$label = array(
);
$arr = array(
);
register_taxonomy('thuoc-tinh-san-pham', 'post', $arr);
}
add_action( 'init', 'custom_taxonomy');
- $label: là biến sẽ lưu trữ tên của nhãn.
- $arr: là biến mảng chứa các tham số của Taxonomy. biến $label cũng sẽ được truyền vào biến này.
- register_taxonomy() sẽ là hàm để đăng ký Taxonomy, có 3 tham số là slug, post type (bạn có thể đăng ký nó vào một loại post type khác chẳng hạn như page, hoặc custom post type,..), và các tham số trong biến $arr.
- Cuối cùng bạn sẽ móc hàm này này hook action ‘init’.
Tạo taxonomy cho custom post type
Bây giờ mình sẽ thực hành thử tạo một taxonomy thuộc tính sản phẩm cho một custom post type mình tạo trong bài: Hướng dẫn tạo Custom Post Type trong WordPress. Nếu muốn tạo cho post bình thường thì bạn chỉ cần thay slug sanpham thanh post trong hàm register_taxonomy() là được. Toàn bộ code như sau:
function custom_taxonomy() {function custom_taxonomy() {
$label = array('name' => 'Các thuộc tính sản phẩm', 'singular' => 'Thuộc tính sản phẩm', 'menu_name' => 'Thuộc tính sản phẩm', 'edit_item' => 'Chỉnh sửa thuộc tính', 'add_new_item' => 'Thêm thuộc tính mới', 'search_items'=> 'Tìm kiếm thuộc tính', 'popular_items'=> 'Thuộc tính phổ biến', 'separate_items_with_commas'=> 'Thêm thuộc tính, phân tách bởi dấu phẩy', 'choose_from_most_used'=> 'Chọn thuộc tính phổ biến', 'not_found'=> 'Không có thuộc tính nào');
$arr = array( 'labels' => $label, 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => true, 'show_tagcloud' => true,);
register_taxonomy('thuoc-tinh-san-pham', 'sanpham', $arr );
}
add_action( 'init', 'custom_taxonomy');
Bạn có thể tìm hiểu về các thông số của hàm register_taxonomy tại đây. Sau khi bạn đưa đoạn trên vào file functions.php bạn sẽ nhận được như hình dưới. Lưu ý là mình đang tạo cho custom post type chứ không phải post bình thường.

Kết quả tạo taxonomy

tùy chọn hierarchical = true sẽ hiển thị như thế này trong post

tùy chọn hierarchical = false sẽ hiển thị như thế này trong post
Tạo taxonomy chỉ đơn giản như vậy thôi, bạn cũng có thể sử dụng nhiều Plugin tạo taxonomy mà không cần đụng vào code, nhưng theo mình công việc này rất đơn giản nên hạn chế không cần phải dùng đến plugin làm gì.
Hiển thị taxonomy ngoài themes
Để hiển thị taxonomy bạn sử dụng hàm get_the_terms(). Cấu trúc hàm như sau:
get_the_terms( id_post, 'taxonomy name' );
Ví dụ mình muốn lấy hết tất cả những loại sản phẩm mà sản phẩm này có mình sẽ viết như sau:
<?php
$terms = get_the_terms( $post->ID, 'thuoc-tinh-san-pham' );
foreach($terms as $term){ echo $term->name;}
?>
Đoạn này được viết trong file single nên mình có thể dùng $post->ID để lấy ra ID. thuoc-tinh-san-pham là tên taxonomy mình đăng ký. Sau đó thì sử dụng hàm lặp để lấy ra những thông tin cần thiết như mình lấy ra tên.
Chúc bạn thành công !
