Trong quá trình phát triển giao diện (theme) hoặc plugin, việc get category là một trong những tác vụ cơ bản nhưng vô cùng quan trọng. WordPress cung cấp một hệ thống phân loại mạnh mẽ (taxonomies), và việc biết cách truy xuất chúng một cách linh hoạt sẽ giúp website của bạn trở nên chuyên nghiệp hơn. Bài viết này sẽ hướng dẫn bạn từ những cú pháp cơ bản đến các kỹ thuật nâng cao để tối ưu hóa việc hiển thị danh mục ra ngoài giao diện người dùng.
Để bắt đầu làm việc hiệu quả với mã nguồn WordPress, bạn có thể tham khảo thêm các công cụ AI hỗ trợ code 10 trợ lý đỉnh cao giúp bứt phá năng suất nhằm tăng tốc quá trình lập trình của mình. Việc nắm vững cách get category không chỉ giúp bạn liệt kê danh sách chuyên mục đơn thuần mà còn mở ra khả năng tùy biến các bộ lọc sản phẩm, menu động hay các khối nội dung liên quan một cách dễ dàng.

Cú pháp cơ bản của hàm get category trong WordPress
Để thực hiện việc lấy danh sách các chuyên mục, hàm phổ biến nhất mà chúng ta thường sử dụng là get_categories(). Đây là một hàm tích hợp sẵn trong nhân WordPress, cho phép bạn truy xuất một mảng các đối tượng chứa thông tin của từng chuyên mục. Hãy xem ví dụ đơn giản dưới đây để hiểu cách get category hoạt động:
<?php
$args = array(
'type' => 'post',
'number' => 10,
'parent' => 0
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
echo '<p>' . $category->name . '</p>';
}
?>
Trong đoạn mã trên, hàm get_categories() nhận vào một mảng tham số $args. Kết quả trả về là một mảng (array) chứa các đối tượng (object). Mỗi đối tượng này đại diện cho một chuyên mục cụ thể với đầy đủ các thuộc tính như tên, slug, mô tả và ID.
Giải thích chi tiết các tham số khi thực hiện get category
Việc truyền tham số chính xác vào mảng $args sẽ giúp bạn lọc được đúng dữ liệu cần thiết. Dưới đây là các tham số quan trọng nhất mà bạn cần lưu ý khi sử dụng hàm get category:
- type: Kiểu bài viết cần lấy danh mục. Mặc định là ‘post’.
- child_of: Trả về tất cả các danh mục con của một ID chuyên mục cụ thể.
- parent: Chỉ lấy các danh mục con trực tiếp của một ID cha (không lấy các đời cháu, chắt).
- orderby: Sắp xếp kết quả theo các tiêu chí như ID, name, slug, count (số lượng bài viết) hoặc term_group.
- order: Thứ tự sắp xếp là ‘ASC’ (tăng dần) hoặc ‘DESC’ (giảm dần).
- hide_empty: Nếu đặt là 1 (mặc định), hàm sẽ không lấy các danh mục chưa có bài viết nào. Nếu muốn hiện tất cả, hãy đặt giá trị là 0.
- taxonomy: Đây là tham số cực kỳ quan trọng nếu bạn muốn get category cho các loại custom taxonomy khác (ví dụ: ‘product_cat’ cho WooCommerce).
- include/exclude: Cho phép bạn chỉ định danh sách các ID chuyên mục muốn lấy hoặc muốn loại bỏ.

Cách truy xuất dữ liệu từ đối tượng get category
Sau khi đã gọi hàm và nhận về mảng đối tượng, bước tiếp theo là lấy các giá trị cụ thể để hiển thị lên giao diện. Khi bạn lặp qua danh sách get category, bạn có thể truy cập vào các thuộc tính sau của mỗi đối tượng $category:
$category->term_id; // Lấy ID duy nhất của chuyên mục $category->name; // Lấy tên hiển thị của chuyên mục $category->slug; // Lấy đường dẫn tĩnh (slug) $category->description; // Lấy mô tả chuyên mục $category->parent; // Lấy ID của chuyên mục cha $category->count; // Lấy tổng số bài viết thuộc chuyên mục này
Việc hiển thị link đến trang chuyên mục cũng rất quan trọng. Bạn không nên tự nối chuỗi URL mà hãy sử dụng hàm chính thống của WordPress để đảm bảo tính tương thích. Để lấy đường dẫn đầy đủ, chúng ta sử dụng hàm get_term_link():
<?php $link = get_term_link($category->slug, 'category'); echo '<a href="' . esc_url($link) . '">' . $category->name . '</a>'; ?>
Truy vấn get category khi biết trước thông tin định danh
Đôi khi bạn không muốn lấy một danh sách dài mà chỉ cần lấy thông tin của một chuyên mục cụ thể khi đã biết ID hoặc Slug của nó. Trong trường hợp này, thay vì dùng get_categories, bạn nên sử dụng hàm get_term_by(). Đây là cách tối ưu hơn để get category đơn lẻ:
// Lấy thông tin khi biết ID là 15
$cat_by_id = get_term_by('id', 15, 'category');
// Lấy thông tin khi biết tên chuyên mục
$cat_by_name = get_term_by('name', 'Công nghệ', 'category');
// Lấy thông tin khi biết slug
$cat_by_slug = get_term_by('slug', 'lap-trinh-web', 'category');
Hàm này trả về một đối tượng chứa toàn bộ thông tin giống như khi bạn sử dụng vòng lặp ở trên. Điều này cực kỳ hữu ích khi bạn muốn tạo các khối nội dung tùy chỉnh cho một chuyên mục nổi bật trên trang chủ.
Hiển thị get category dưới dạng dropdown select
Trong các thiết kế như trang tìm kiếm hoặc trang cửa hàng, việc hiển thị get category dưới dạng một danh sách thả xuống (dropdown) là yêu cầu phổ biến. WordPress cung cấp hàm wp_dropdown_categories() để giải quyết việc này chỉ với vài dòng code.
<?php
$args = array(
'show_option_none' => 'Chọn chuyên mục',
'orderby' => 'name',
'show_count' => 1,
'hierarchical' => 1,
'class' => 'my-custom-select',
'taxonomy' => 'category',
);
wp_dropdown_categories( $args );
?>
Tham số hierarchical đặt là 1 giúp các chuyên mục con được thụt lề so với chuyên mục cha, tạo ra một giao diện phân cấp dễ nhìn. Bạn có thể xem thêm tài liệu kỹ thuật tại trang WordPress Developer Resources để hiểu rõ hơn về các thuộc tính mở rộng của hàm này.

Tối ưu hóa hiệu suất khi thực hiện get category
Mặc dù việc get category không tốn quá nhiều tài nguyên, nhưng nếu website của bạn có hàng ngàn chuyên mục hoặc bạn gọi hàm này quá nhiều lần trên một trang, nó có thể ảnh hưởng đến tốc độ tải trang. Hãy lưu ý các điểm sau để tối ưu:
- Sử dụng tham số
numberđể giới hạn số lượng trả về nếu không cần lấy hết. - Tận dụng
hide_emptyđể tránh hiển thị những chuyên mục rác không có nội dung. - Nếu có thể, hãy sử dụng
get_transientđể lưu kết quả get category vào bộ nhớ đệm, giúp giảm thiểu truy vấn vào cơ sở dữ liệu ở những lần tải trang sau.
Ngoài ra, nếu bạn đang xây dựng các hệ thống lớn hơn, việc kết hợp với các kỹ thuật Headless WordPress 2026: 7 framework đột phá xây dựng PWA sẽ mang lại trải nghiệm người dùng cực kỳ mượt mà nhờ vào việc truy xuất dữ liệu qua API thay vì các hàm PHP truyền thống.
Kết luận
Việc làm chủ kỹ thuật get category trong WordPress là bước đệm quan trọng để bạn trở thành một nhà phát triển giao diện chuyên nghiệp. Từ việc sử dụng get_categories cho danh sách động, get_term_by cho các yêu cầu cụ thể, đến wp_dropdown_categories cho giao diện người dùng, mỗi hàm đều có vai trò riêng biệt giúp bạn xử lý dữ liệu linh hoạt.
Hy vọng qua bài viết này, bạn đã nắm vững cách get category và có thể áp dụng ngay vào dự án thực tế của mình. Đừng quên thử nghiệm với các tham số khác nhau để khám phá hết sức mạnh mà hệ thống phân loại của WordPress mang lại. Chúc các bạn thành công trên con đường lập trình WordPress!
Những câu hỏi thường gặp về kỹ thuật get category trong WordPress
Hàm nào phổ biến nhất để lấy danh sách chuyên mục trong WordPress?
Hàm get_categories() là lựa chọn phổ biến nhất, cho phép bạn truy xuất một mảng các đối tượng chứa đầy đủ thông tin về chuyên mục.
Làm thế nào để ẩn các chuyên mục không có bài viết khi get category?
Bạn chỉ cần sử dụng tham số ‘hide_empty’ => 1 (đây là giá trị mặc định) trong mảng tham số truyền vào hàm get_categories().
Sự khác biệt giữa tham số 'parent' và 'child_of' là gì?
‘parent’ chỉ lấy các chuyên mục con trực tiếp của một ID cha, trong khi ‘child_of’ sẽ lấy toàn bộ các đời con, cháu, chắt bên dưới.
Làm sao để get category cho các loại taxonomy tùy chỉnh như sản phẩm?
Bạn cần truyền tên taxonomy tương ứng vào tham số ‘taxonomy’, ví dụ: ‘taxonomy’ => ‘product_cat’ đối với danh mục sản phẩm WooCommerce.
Hàm nào dùng để lấy thông tin một chuyên mục duy nhất khi đã biết ID hoặc Slug?
Trong trường hợp này, bạn nên sử dụng hàm get_term_by() với các định danh như ‘id’, ‘slug’ hoặc ‘name’ để đạt hiệu suất tốt nhất.
Làm cách nào để lấy đường dẫn URL chính xác của một chuyên mục?
Bạn nên sử dụng hàm get_term_link($category->slug, ‘category’) thay vì tự nối chuỗi URL để đảm bảo tính tương thích và chính xác.
Có cách nào hiển thị chuyên mục dưới dạng danh sách thả xuống nhanh chóng không?
WordPress cung cấp hàm wp_dropdown_categories() để tự động tạo một thẻ select HTML chứa danh sách chuyên mục với nhiều tùy chỉnh có sẵn.
Làm thế nào để tối ưu hiệu suất khi get category cho website lớn?
Hãy giới hạn số lượng trả về bằng tham số ‘number’, ẩn chuyên mục rỗng và sử dụng get_transient để lưu kết quả vào bộ nhớ đệm.