Hướng dẫn get category trong wordpress từ a đến z

Tiếp tục với chủ đề lập trình theme wordpress, bài viết này mình sẽ hướng dẫn get category trong wordpress cũng như là get taxomony (Một dạng custom của category). Bài viết này sẽ giúp cho các bạn hiển thị được danh sách chuyên mục cũng như danh mục sản phẩm… ra ngoài front end.

Trong website hocwordpress.vn mình cũng có sử dụng đoạn code này để thực hiện list các danh mục ra như hình phía dưới.

Hướng dẫn get category trong wordpress từ a đến z

Cú pháp get category trong wordpress

Chúng ta sẽ sử dụng hàm get_categories() để thực hiện công việc trên

<?php
$args = array(
    'type'      => 'post',
    'number'    => 10,
    'parent'    => 0
);
$categories = get_categories( $args );
foreach ( $categories as $category ) { ?>
     <?php echo $category->name ; ?>
<?php } ?>

Hàm get_categories() sẽ nhận tham số là 1 array ($args)

Kết quả trả về của hàm get_categories() là mảng (array) trong mảng đó chưa nhiều đối tượng (object), mỗi đối tượng tương ứng là 1 chuyên mục và trong chuyên mục sẽ chưa đẩy đủ các thành phần của chuyên mục đó.

Tham số của hàm get category trong wordpress

Như mình đã nói phần trên tham số của hàm get_categories() là một mảng, thành phần của mảng đó tùy thuộc vào yêu cầu của người dùng và truyền vào cho thích hợp. Cụ thể như sau:

<?php
$args = array(
 'type'                     => 'post',
 'child_of'                 => 0,
 'parent'                   => '',
 'orderby'                  => 'name',
 'order'                    => 'ASC',
 'hide_empty'               => 1,
 'hierarchical'             => 1,
 'exclude'                  => '',
 'include'                  => '',
 'number'                   => '',
 'taxonomy'                 => 'category',
 'pad_counts'               => false 
); 
?>

Tùy vào yêu cầu mà chúng ta thêm bớt các tham số phía trên nha.

Trong đó: 

  • ‘type’ là kiểu bài viết khi cài wordpress ban đầu thi sẽ có 2 kiểu đó là ‘post’ và ‘page’. Mặt nếu ko sử dụng điều kiện này thì nó sẽ nhận giá trị là ‘post’.
  • ‘child_of’ sẽ nhận 2 giá trị là 1 hoặc 0, Nếu nhận giá trị là 1 thì nó chỉ lấy các danh mục có danh mục con. Nếu nó nhận giá trị là 0 thì nó sẽ lấy tất cả danh mục. Mặt định nó nhận giá trị là 0.
  • ‘parent’ Sẽ nhận giá trị là id cha, Khi điền id cha vô đây nó sẽ list hết danh sách các chuyên mục con của parent.
  • ‘orderby’ Giá trị này nó nghĩ là sắp xếp theo, giá trị nhận có thể là : id, name, slug, count, term_group. Mặc định nó sẽ nhận giá trị là name.
  • ‘order’ Sẽ nhận 2 giá trị là: ASC hoặc DESC có nghĩ là sắp sếp theo giảm dân hoặc tăng dần. Mặt định nó là ASC.
  • ‘hide_empty’ Sẽ nhận 2 giá trị là 1 hoặc 0, Nếu nhận giá trị 1 là nó sẽ không hiển thị các danh mục mà chưa có bài viết.
  • hierarchical‘ Có hiện thị danh mục theo dạng cây hay ko. Nếu có điền giá trị 1, nếu không thì giá trị 0
  • ‘exclude’ Giá trị nhận ở đây là 1 mảng các id không muốn hiện thị trong chuyên mục.
  • ‘include’ Giá trị nhận là 1 mảng id sẽ xuất hiện trong chuyên mục
  • ‘number’ Số lượng danh mục muốn hiển thị.
  • ‘taxomony’ slug của taxomony cần lấy áp dụng cho custom category

Các giá trị trả về trong object:

$category->term_id // lấy id của chuyên mục
$category->name // lấy tên của chuyên mục
$category->slug // lấy slug của chuyên mục
$category->term_group // lấy nhóm
$category->term_taxonomy_id // id của chuyên mục
$category->taxonomy // lấy slug
$category->description // lấy mô tả chuyên mục
$category->parent // lấy id chuyên mục cha
$category->count // lấy số lượng bài viết của chuyên mục
$category->cat_ID // lấy id của category
$category->category_count // lấy số lượng bài viết của category
$category->category_description // lấy mô tả của category
$category->cat_name // lấy tên của category
$category->category_nicename // lấy slug của category
$category->category_parent // lấy id cha của category

Lấy link của một chuyên mục

Chúng ta sử dụng hàm sau để lây link của chuyên mục như sau

<?php echo get_term_link($category->slug, 'category'); ?>

Chổ category là slug của taxomony cần lấy, ví dụ lấy link của danh mục sản phẩm woo sẽ là “product_cat

Get category khi biết trước id, slug hoặc name

Khi biết id của 1 category bạn muốn lấy tất cả thông tin của category đó thì các bạn sử dụng hàm get_term_by cụ thể các get như sau:

// get category khi biết trước id
$category = get_term_by('id', 10, 'category')

// get category khi biết trước name
$category = get_term_by('name', 'Tin tức', 'category')

// get category khi biết trước slug
$category = get_term_by('slug', 'tin-tuc', 'category')

Giá trị trả về của hàm này cũng là 1 object, các thành phần trong object cũng tương tự phần trên

Get category trong wordpress dạng dropdown select

Để get category trong wordpress theo dạng dropdown chúng ta sử dụng hàm wp_dropdown_categories cụ thể như sau:

<?php $args = array(
 'show_option_all'    => '',
 'show_option_none'   => __( 'Danh mục' ),
 'option_none_value'  => '',
 'orderby'            => 'ID',
 'order'              => 'ASC',
 'show_count'         => 0,
 'hide_empty'         => 0,
 'child_of'           => 0,
 'include'            => '',
 'echo'               => 1,
 'selected'           => 0,
 'hierarchical'       => 1,
 'name'               => 'category',
 'id'                 => 'category',
 'class'              => 'form-control',
 'depth'              => 0,
 'tab_index'          => 0,
 'taxonomy'           => 'category',
 'hide_if_empty'      => false,
 'value_field'      => 'slug',
); ?>
<?php wp_dropdown_categories( $args ); ?>

Mình đã áp dụng code này để làm chức năng search sản phẩm theo danh mục các bạn có thể xem thử nha.

Tổng kết

Hôm nay mình đã giới thiệu cho bạn cách get category trong wordpress, hi vọng với chút kiến thức này sẽ giúp các bạn trong quá trình học lập trình theme wordpress

Chào các bạn.

3.5 8 votes
Đánh giá bài viết
Admin:

View Comments (1)

Leave a Comment