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.
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.
h minh muon hien thi ten taxonomies mà bài viết đó chọn thì làm thế nào hả bạn
rất cảm ơn bạn đã có các bài viết bổ ích
cảm ơn tác giả. mình giờ đang đùng wp làm cho site du lịch cty
Sáu cho minh hoi: minh dang viet cai sidebar da cho hien thi duoc taxonomies gio minh muon khi click vao taxonomies nao thi no se hien thi tren trang chu tat ca bai viet cua taxonomies do..
cái đoạn code trên ném vào file nào vậy bạn? và mình thay cái “oject” thành cái gì được bạn ơi? sr mình mới học web nên k biết. mong bạn chỉ kĩ hơn dc k. đoạn code trên mình hiểu cách chạy và viết nhưng kk biết viết chúng vào chỗ nào và ấy các cái khác ntn?
Bạn có thể đặt vào tập tin functions.php của giao diện để sử dụng, ‘object’ là kiểu trả về của hàm nha bạn.
Anh ơi , em get cái link không được “get_category_link( $category->term_id )” , anh hướng dẫn cho em với.
Sao không được bạn, bạn lấy gán vào biến hay là xuất ra màn hình, với lại kiểm tra xem cái $category kia có phải là object hay chưa nhé.
https://codex.wordpress.org/Function_Reference/get_category_link
Chào a Sáu , e có một vấn đề mong a giúp ,hiện tại theo cấu trúc wp-template-hierarchy thì khi tạo 1 custom taxonomy mình sẽ tạo ra 1 file theo kiểu taxonomy-slug . sao e tạo nó k nhận là sao nhỉ . mong a rep qua email [email protected]
Chào bạn, nếu là custom taxonomy thì bạn tạo file theo cú pháp taxonomy-{custom_taxonomy_name}.php nhé. Nếu nó không nhận thì có thể bạn tạo taxonomy theo dạng private hoặc tạo không đúng.
Xem thêm: https://codex.wordpress.org/Function_Reference/register_taxonomy
Hi a, e vẫn chưa hiểu lắm a có thể giải thích rõ giúp e được không , Giả sử e có 1 custom postype là nha-dat . Trong custom postype này có rất nhiều taxonomy như ( dat-ban , dat-thue , tinh-thanh , quan-huyen ) . Giờ e muốn tạo 1 file hiển thị các bài viết của từng taxonomy một thì làm ntn ạ . E đã thử taxonomy-dat-ban , taxonomy nó đều không nhận . Không biết e phải tạo ntn mới đúng mong a giúp đỡ . Cảm ơn a
cảm ơn tác giả. mình giờ đang đùng wp làm cho site cá nhân
cảm ơn tác giả. mình giờ đang đùng wp làm cho site cá nhân
Chúc trang của bạn phát triển tốt nhé.
Bài viết rất hữu ích, thanks
Mình muốn get category trong bài viết custom post type , mà không get hết toàn bộ category thì làm sao bạn ơi
Bạn sử dụng hàm wp_get_post_terms nhé: https://codex.wordpress.org/Function_Reference/wp_get_post_terms