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.
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
Để duy trì blog nên mình có làm aff cho 1 số bên hosting. Nhưng dù aff mình cũng chọn 1 số nhà cung cấp uy tín về chất lượng và support nên các bạn cứ yên tâm nhé.
Nếu có mua hosting mà có trong list dưới đây các bạn click vào link trước khi mua để ủng hộ mình nhé. Mình cảm ơn nhiều
- Azdigi: Giá rẻ thì dùng gói Pro Gold Hosting còn chất lượng hơn thì em khuyên dùng Business Hosting. Có điều kiện thì lên VPS nhé
- Tino hosting
- iNet
- Nước ngoài thì Vultr
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ính và test2 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^^
- Bình luận