Home / WordPress / Thủ thuật WordPress / Code lấy danh mục và các bài chung category với bài viết đang xem

Code lấy danh mục và các bài chung category với bài viết đang xem

Đây là Code hiển thị danh mục và các bài viết có chung category với bài viết đang xem (current post) trong WordPress, code tự động add class=”active” vào thẻ <li> tiêu đề bài viết đang mở trên trình duyệt để bạn có thể CSS cho nó.

Chỉ hiển thị danh mục và bài viết liên quan với bài viết hiện tại

Bạn có thể dán code vào trang nào bạn muốn hiển thị. Ở trong bài viết này mình sẽ tạo 1 template và có thể gọi ra bất kỳ chỗ nào.

Đầu tiên bạn vào thư mục Theme bạn đang sử dụng, sau đó bạn tạo 1 file .php ở đây mình tạo tên file sidebar.php

Giờ thì bạn copy code dưới đây và dán vào trong file .php vừa tạo:

Để gọi template này vào file khác như single.php, hay content.php bạn sử dụng đoạn code sau:

Nếu bạn tạo file trong các thư mục con cho dễ quản lý thì bạn chỉ việc chỉ đường dẫn cho nó là được. Như đoạn code dưới đây mình đã tạo file sidebar-2.php trong thư mục /template-parts/

Chúc bạn thành công.

Nếu bạn muốn lấy toàn bộ Category có bài viết thì tham khảo hướng dẫn dưới đây:

Bài này chúng ta sẽ tìm hiểu cách sử dụng hàm  get_categories().

Cú pháp để lấy danh mục trong wordpress:

Giải thích:

Đầu tiên chúng ta khai báo 1 biến $args là 1 mảng dữ liệu chứa các thành phần là các điều kiện để lấy danh mục. Tiếp theo chúng ta gán biến $categories=get_categories( $args ) lúc này những điều kiện $args đã được truyền vào hàm get category để xử lý và trả về  biến $categories là một giá trị và giá trị có kiểu mảng.

Để lấy dữ liệu có kiểu mảng chúng ta sử dụng vòng lặp foreach để lấy như trong php thông thường.

Các điều kiện lấy danh mục trong worpress:

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ị.
  •  ‘pad_counts’

Các giá trị trả về

Đó là các giá trị trả về khi chúng ta sử dụng hàm get_category(), tùy trường hợp sử dụng mà chúng ta lấy các giá trị trả về phù hợp.

ví dụ như:

  • $category->term_id // Lấy id chuyên mục
  • $category->name // lấy tên chuyên dụng
  • $category->slug // Lấy đường dẫn chuyên mục
  • $category->description // Lấy phần mô tả
  • $category->parent // lấy mô tả của chuyên mục
  • $category->count //Lấy số lượng bài viết có trong chuyên mục
  • Ngoài trả còn 1 số dữ liệu trả về khác ít sử dụng mình ko giời thiệu các bạn có thể lên mạng tìm hiểu thêm nếu cần thiết.

Ví dụ:

lấy danh mục trong wordpress

Mình muốn hiện thị như ảnh trên thì làm như sau:

Trong đoạn code trên lưu ý 1 số điểm:

Đoạn code này dùng để lấy link danh mục. Có 2 tham số là $category->slug Đường dẫn của danh mục, Còn category là tên mặc định.