Custom taxonomy trong wordpress là gì ?
Mặc định khi cài wordpress lên thì trong phần post (Bài viết) chúng ta sẽ thấy có 2 phần là: Chuyên mục và thẻ. 2 phần này trong wordpress được gọi là taxonomy (Phân loại danh mục).
Việc đi tạo một phân loại danh mục mới có cấu trúc tương tự như chuyên mục hoặc thẻ, người ta gọi là custom taxonomy trong wordpress.
Ví dụ: Chúng ta có một custom post type là sản phẩm, bây giờ muốn chia sản phẩm theo từng danh mục thì mặc định wordpress không cung cấp sẵn. Chúng ta phải tạo một custom taxonomy “danh mục” để làm danh mục sản phẩm…
Tạo custom taxonomy trong wordpress
Để tạo custom taxonomy các bạn chèn đoạn code sau vào file functions.php của theme đang sử dụng nhé.
À mình sẽ tạo 1 custom taxomony là địa điểm trong post nhé.
Cú pháp
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 );
Chú ý
- 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
Tạo custom taxonomy bằng plugin
Ngoài cách tạo taxonomy bằng code như phía trên, thì cũng có rất nhiều plugin hỗ trợ việc này. Mình cũng đã có 1 bài viết về tạo custom taxonomy bằng plugin toolset types các bạn có thể tham khảo. Hoặc xem qua một số plugin free sau đây
- Pods – Custom Content Types and Fields
- Custom Post Type UI
- MB Custom Taxonomy
Get custom taxonomy trong wordpress
Get danh sách custom taxonomy
Tương tự nhưng get category trong wordpress chúng ta dùng đoạn code sau chèn vào vị trí cần hiển thị trong theme nhé
<?php $args = array( 'hide_empty' => 0, 'taxonomy' => 'danh-muc', ); $cates = get_categories( $args ); foreach ( $cates as $cate ) { ?> <li> <a href="<?php echo get_term_link($cate->slug, 'danh-muc'); ?>"><?php echo $cate->name; ?></a> </li> <?php } ?>
Chú ý : Tham số taoxonomy nhận giá trị là slug của taxonomy mà khi tạo chúng ta khai báo nhé
Get post với custom taxonomy trong wordpress
Để get danh sách các vài viết thuộc 1 taxonomy nào dó mặc định chúng ta sẽ đặt tên file là : taxonomy-{slug}.php như ví dụ trên thì ta sẽ đặt tên file là taxonomy-dia-diem.php
Đối với new wp_query chúng ta sẽ có đoạn code get post như sau:
<?php $args = array( 'posts_per_page' => -1, 'post_type' => 'post', 'dia-diem' => 'slug' ); $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(); ?>
Chú ý: slug ở tham số trên là slug của taxonomy cần lấy nha.
Tổng kết
Như vậy là hôm nay Congtyannhien đã hướng dẫn cho anh em cách custom taxonomy trong wordpress. Đây cũng lại một trong những kiến thức hết sức quan trọng. Giúp cho website của chúng ta trở nên chuyên nghiệp hơn.
Mình sẽ tiếp tục cập nhật các bài viết mới nhất trong chủ đề này. Các bạn chú ý theo dõi nha!
Cảm ơn và xin chào các bạn.