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 truongcongthang.com mình cũng có tiêu 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.
Cú pháp get category trong wordpress
Chúng ta sẽ tiêu 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 đề nghị 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 đề nghị 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 tiêu 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 vận 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 tiêu 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 tiêu 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 tiêu 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 đã vận 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.
Kết luận
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.
Trả lời