Lấy category và custom category trong WordPress

Cập nhật lần cuối vào

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.

Lấy tất cả category và custom taxonomy

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.

Theo dõi
Thông báo của
guest

17 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
cuong
cuong
9 năm trước

h minh muon hien thi ten taxonomies mà bài viết đó chọn thì làm thế nào hả bạn

addevel
9 năm trước
Trả lời  cuong

rất cảm ơn bạn đã có các bài viết bổ ích

tua.vn
9 năm trước

cảm ơn tác giả. mình giờ đang đùng wp làm cho site du lịch cty

thanh trạng
thanh trạng
9 năm trước

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..

invis
invis
9 năm trước

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?

Lưck
Lưck
8 năm trước

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.

Đỗ Bảo
Đỗ Bảo
8 năm trước

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]

Đỗ Bảo
Đỗ Bảo
8 năm trước

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

phim hài 2017
7 năm trước

cảm ơn tác giả. mình giờ đang đùng wp làm cho site cá nhân

Du lich Da Nang
7 năm trước

cảm ơn tác giả. mình giờ đang đùng wp làm cho site cá nhân

taigameapk
7 năm trước

Bài viết rất hữu ích, thanks

pntruong
pntruong
5 năm trước

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