Chào mọi người. Hôm nay tanlevis xin giới thiệu 1 chức năng rất hay của wordpress – Custom taxonomy.

Taxonomy là gì?
  • taxonomy là 1 cách để phân loại những bài viết trong wordpress, ví dụ các taxonomies mặc định của WP như: Categories, Post tags.
  • Taxonomy vô cùng quan trọng trong việc thể hiện những bài post trong wp theo ý muốn của mình, ví dụ như 1 shop thời trang nhỏ như http://www.valentineyogurt.com/test/
Cách sử dụng

– Mở file function.php trong thư mục theme của bạn, thêm đoạn code sau vào phần cuối file (nhớ là trước dấu ?>)

.

// Custom taxonomy for Size
  register_taxonomy('Size', 'post',  array(
    'hierarchical' => true, 'label' => 'Size',
    'query_var' =>  true, 'rewrite' => true));

  // Custom taxonomy for Price
  register_taxonomy('Price', 'post',  array(
    'hierarchical' => false, 'label' => 'Price',
    'query_var'  => true, 'rewrite' => true));

  // Custom taxonomy for Brand
  register_taxonomy('Brand', 'post',  array(
    'hierarchical' => true, 'label' => 'Brand',
    'query_var'  => true, 'rewrite' => true));

function register_taxonomy($taxonomy, $object_type, $args = array()): có chức năng đăng ký 1 taxonomy mới.

$taxonomy: tên taxonomy (vd: Size).
$object_type: đối tượng mà taxonomy quản lý (vd: post, page, link, custom post type).
$args = array(): mảng các tham số như:
‘hierarchical’ => true | false: có được phân cấp như Categories hay không.
‘label’: Nhãn hiển thị trong option panel, vd: Size, Price, Brand. ..v..v.. các bạn có thể tham khảo tại đây: http://codex.wordpress.org/Function_Reference/register_taxonomy

Khi đăng ký xong hãy vào dashboard, vào mục Posts và hãy nhìn xem chúng ta có gì? Đó là 3 taxonomy với tên (Size, Price, Brand) vừa đăng ký ở trên. Chúng giống như quản lý Tags, hay là Categories vậy.

Hiển thị taxonomy: Mở file index.php, tìm đoạn code nơi xuất ra những bài post, thêm code dưới đây vào trong vòng loop:

//hiển thị hình ảnh sản phẩm
<?php if(has_post_thumbnail()):?>
 <div>
   <?php echo get_the_post_thumbnail($post->ID, 'post-thumbnail'); ?>"
 </div>
<?php endif;?>
//Hiển thị title
<h2 class="entry-title">
  <a href="<?php the_permalink(); ?>"      title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?>
  </a>
</h2>
<div>
 <?php echo get_the_term_list( $post->ID, 'Size', '<strong>Kích thước:</strong>', ', ', '' );?>
</div>
<div>
 <?php echo get_the_term_list( $post->ID, 'Brand', '<strong>Nhãn hiệu:</strong>', ', ', '' );?>
</div>
<div>
  <?php echo get_the_term_list($post->ID, 'Price', '<strong>Giá:</strong>', '', '');?>
</div>

function get_the_term_list($id = 0, $taxonomy, $before = ”, $sep = ”, $after = ”): hiện các taxonomy của bài viết này theo tên của taxonomy đã đăng ký.
$id: $post->ID, id hiện tại của 1 post.
$taxonomy: tên của taxonomy mình đã đăng ký, vd: Size, Price, Brand (lưu ý có phân biệt chữ hoa và thường).
$before: thẻ, ký tự trước khi xuất ra tên của taxonomy, vd: <strong>Giá:</strong>
$sep: dấu các giữa các taxonomy, vd dấy phẩy (,).
$after: thẻ, ký tự sau khi xuất ra tên của taxonomy, trong bài này mình để rỗng.

Giai đoạn cuối là post vài bài lên thử nghiệm và style css lại cho đẹp, trong demo này mình lấy theme 20 10 (twenty ten) mặc định cửa wp 3.0 và cũng không style lại cho giống shop thời trang lắm :D.

Kết luận

Theo mình thì taxonomy thực sự rất hay, và rất cần thiết cho việc tùy chỉnh wordpress làm việc theo ý mình. Mình đang có ý định viết 1 trang quản lý học sinh trên WP. Hy vọng sớm thành hiện thực. Tiện đây mình cũng xin giới thiệu luôn bài viết tiếp theo sẽ là Custom Post Type trong wp và sau nữa sẽ là một trang smallShop có sản phẩm, giỏ hàng và vài chi tiết khác. Nếu có thắc mắc hay đóng góp cải thiện thì mong các bạn comment ở bên dưới nha.