Header Ads

ad

Lấy category và custom category trong WordPress

Trong bài viết này Sáu sẽ hướng dẫn cho bạn cách lấy chuyên mục và custom taxonomy trên blog WordPress. Yêu cầu của bài này đòi hỏi bạn phải biết về code PHP căn bản cũng như là kiến thức cơ bản về lập trình WordPress.

Lấy tất cả category và custom taxonomy

Yêu cầu của bài viết được đặt ra là, bạn muốn tạo một custom post type mới và trong đó có custom taxonomy đóng vài trò như một category. Bây giờ bạn muốn lấy tất cả các category của bài viết cũng như tất cả các category của custom post type bạn vừa tạo.
Đối với các chuyên mục của bài viết trên blog WordPress thì bạn có thể truy vấn bằng hàm get_categories đã có sẵn trong bộ core.

<?php
$args = array(
  'orderby' => 'name',
  'parent' => 0
  );
$categories = get_categories( $args );
foreach ( $categories as $category ) {
 echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a><br/>';
}
?>

Với trường hợp bên trên thì không có gì phải nói nhiều rồi, vì nó đã có sẵn và chúng ta cứ thế mà sử dụng, có điều bạn cũng phải tham khảo thêm bài viết hướng dẫn của WordPress.
Bây giờ, bạn sẽ thực hành viết code lấy tất cả các chuyên mục bao gồm category và custom taxonomy trên trang blog hiện tại. Bạn áp dụng code như Sáu đã làm bên dưới:

<?php
function stheme_get_taxonomy($term_id = 0) {
 $taxonomies = get_taxonomies('', 'object');
 if($term_id < 1) {
  return $taxonomies;
 }
 foreach($taxonomies as $tax) {
  $terms = get_terms($tax->name);
  foreach($terms as $term) {
   if($term->term_id == $term_id) {
    return $tax;
   }
  }
 }
}
?>
<?php $taxonomies = stheme_get_taxonomy(); ?>
<?php foreach($taxonomies as $tax) : ?>
 <?php if(empty($tax->hierarchical) || !$tax->hierarchical) continue; ?>
 <?php $terms = get_terms($tax->name); ?>
 <?php foreach($terms as $term) : ?>
  <?php echo $term->name."<br />"; ?>
 <?php endforeach; ?>
<?php endforeach; ?>

Code bên trên Sáu sử dụng hàm get_taxonomies để lấy tất cả các taxonomy hiện có trên blog của bạn và trả về với kiểu giá trị là object.
$taxonomies = get_taxonomies('', 'object');
Sau khi có được danh sách các taxonomy thì bạn duyệt từng taxonomy một và lấy term của nó. Bạn chú ý câu lệnh điều kiện để chúng ta kiểm duyệt xem taxonomy đó có phải là một category hay không:
<?php if(empty($tax->hierarchical) || !$tax->hierarchical) continue; ?>
Nếu nó không phải là chuyên mục thì chúng ta sẽ bỏ qua, ngược lại nếu taxonomy là chuyên mục thì chúng ta sẽ lấy tất cả các term của nó.
<?php $terms = get_terms($tax->name); ?>
Như vậy là chúng ta đã có danh sách các chuyên mục, chỉ cần lưu nó lại hoặc là xuất nó ra bên ngoài để sử dụng. Chúc bạn thành công.

No comments