Hiển thị Taxonomy theo cấp bậc – Get taxonomy by level

Qua 2 bài viết Hiển thị toàn bộ category theo level của category và Hiển thị toàn bộ term bởi level | get all term by level chúng ta đã có thể lấy được toàn bộ các category và term theo level rồi. Nhưng trong bài này mình sẽ hướng dẫn các bạn cách Hiển thị Taxonomy theo cấp bậc (hoặc Get taxonomy by level) ngắn hơn, đơn giản hơn và giá trị trả về là kiểu mảng. Kiểu mảng sẽ giúp cho các bạn linh hoạt hơn trong quá trình sử dụng.

Hiển thị taxonomy theo cấp bậc

Hàm hiển thị Taxonomy theo cấp bậc

Trước tiên các bạn cần thêm đoạn code này vào file functions.php của theme bạn đang sử dụng

function get_level($category, $level = 0){
	if ($category->parent == 0) {
		return $level;
	}else{
		$level++;
		$category = get_term($category->parent);
		return get_level($category, $level);
	}
}
function display_cat_level( $taxonomy = 'category', $level = 0 , $parent = NULL){
	$output = array();		
	$catArgs = array( 'hide_empty' => false);
	if( $parent != NULL ){
		$catArgs['child_of'] = $parent;
	}	 	
	$catArgs['taxonomy'] = $taxonomy;
	
	$cats = get_terms( $catArgs );
			
	if( $cats && !is_wp_error($cats) ){
		$stt = 0;
		foreach($cats as $cat){
			$current_cat_level = get_level($cat);
			if( $current_cat_level == $level ){
				$output[$stt]['name'] = $cat->name;
				$output[$stt]['link'] = get_term_link($cat->term_id);
				$output[$stt]['id'] = $cat->term_id;
			}
			$stt++;
		}
	}
	return $output;
}

Bây giờ tới bước sử dụng hàm trên. Rất đơn giản để sử dụng hàm trên. Ví dụ bạn có Taxonomy của Woocommerce là Product Categories có slug product_cat (Với các term như hình trên).

Yêu cầu là lấy toàn bộ Taxonomy cấp 0 trong hình là Máy tínhtest2 thì ta có

// get all term level 0 of product_cat
$term = display_cat_level('product_cat');

Ví dụ tiếp theo nếu bạn muốn hiển thị toàn bộ taxonomy cấp 1 của mục Máy tính (có ID 6) thì ta có

// Get all term level 1 of product_cat ID 6 
$term = display_cat_level('product_cat',1,6);

Tương tự hiển thị toàn bộ taxonomy cấp 2 của mục máy tính ta có

// Get all term level 2 of product_cat ID 6 
$term = display_cat_level('product_cat',2,6);

Kết quả trả về sẽ có dạng mảng như sau

Array
(
    [2] => Array
        (
            [name] => Inspiron
            [link] => http://woo.local/product-category/may-tinh/dell/inspiron/
            [id] => 11
        )

    [3] => Array
        (
            [name] => XPS
            [link] => http://woo.local/product-category/may-tinh/dell/xps/
            [id] => 12
        )

)

Nếu có gì không hiểu bạn cứ comment bên dưới. Mình sẽ cố gắng giải đáp

Chúc các bạn thành công^^

Hiển thị Taxonomy theo cấp bậc – Get taxonomy by level
5 (100%) 1 vote
  • Bình luận
Hosting nên dùng cho WordPress tại Việt Nam
Có thể bạn quan tâm
x