Category hay tiếng Việt gọi là danh mục.
Đây là hình thức phân loại bài viết (post) trong WordPress. Ví dụ trên blog này mình có các category như hướng dẫn WordPress, plugin WordPress vân vân.
Vậy sau khi tạo category và phân loại bài viết, bạn đưa category ra trang chủ như thế nào?
Trong bài viết này mình sẽ hướng dẫn bạn một vài cách đưa category ra trang chủ. Từ đơn giản đến nâng cao.
1. Sử dụng menu
Đây là hình thức phổ biến nhất trong việc đưa category ra trang chủ. Mình đã có bài viết về cách sử dụng menu trong WordPress.
Trong quá trình tạo menu, bạn có thể sử dụng category như là thành phần của menu.
Nếu bạn chưa biết cách tạo menu, bạn có thể đọc lại bài viết đó.
2. Sử dụng category widget
WordPress cung cấp cho bạn Category Widget để hiển thị toàn bộ category trong website. Bạn có thể đặt widget ở những vị trí sidebar mà theme hỗ trợ.

Giao diện cấu hình Category Widget

Hiển thị category widget ở trang chủ
Với phương pháp này, bạn không kiểm soát việc hiển thị của chuyên mục. Ví dụ: bạn không muốn hiển thị một category A chẳng hạn. Với widget này, bạn không thể làm được như vậy
3. Sử dụng custom menu
Với phương pháp này, bạn sẽ sử dụng custom menu để hiển thị category.
Đầu tiên bạn cần tạo một custom menu. Cách tạo cũng giống như cách tạo menu thông thường.

Tạo custom menu chứa category bạn muốn hiển thị
Sau khi tạo xong custom menu, bạn vào phần Giao diện -> Widget. Bạn kéo widget có tên Custom Menu (giao diện tiếng việt dịch là Tùy chọn) vào sidebar bạn muốn hiển thị. Lúc này bạn chọn custom menu bạn vừa tạo ở trên.

Với phương pháp này, chúng ta gặp đôi chút khó khăn khi muốn hiển thị số bài post cho mỗi category. Để làm được như vậy, bạn vào Giao diện -> Sửa, chọn file functions.php. Và bổ sung đoạn code vào cuối file functions.
function custom_nav_args($args){
if($args['menu'] && $args['menu']->name == 'Category Nav') { // replace 'Category Nav' with your menu name
$args['walker'] = new Custom_Category_Menu_Walker();
}
return $args;
}
add_filter('wp_nav_menu_args', 'custom_nav_args');
class Custom_Category_Menu_Walker extends Walker_Nav_Menu {
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
$indent = ( $depth ) ? str_repeat( "t", $depth ) : '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes[] = 'menu-item-' . $item->ID;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) );
$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args, $depth );
$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
$output .= $indent . '';
$atts = array();
$atts['title'] = ! empty( $item->title ) ? $item->title : '';
$atts['target'] = ! empty( $item->target ) ? $item->target : '';
$atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : '';
$atts['href'] = ! empty( $item->url ) ? $item->url : '';
$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );
$attributes = '';
foreach ( $atts as $attr => $value ) {
if ( ! empty( $value ) ) {
$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
$attributes .= ' ' . $attr . '="' . $value . '"';
}
}
if ($item->object == 'category') {
$category = get_category($item->object_id);
}
$item_output = '';
$item_output .= apply_filters( 'the_title', $item->title, $item->ID ) . (!empty($category)?" ({$category->count})":"");
$item_output .= '';
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
}
Và đây là thành quả:

Lời kết
Thông qua bài viết ngắn ngọn này, bạn đã biết cách đưa category ra màn hình trang chủ.
Nếu bạn có vấn đề gì, hãy để lại comment bên dưới.
Có cách nào bỏ hẳn url category không bác, mình thử nhiều cách rồi nhưng trong thẻ meta nó vẫn bị
Chào anh, em muốn hỏi là em không muốn gọi một category ra trang chủ ( ví dụ e có chuyên mục là CHIA SÉ và em không muốn các bài trong chuyên mục đó hiển thị ra trang chủ mà bắt người đọc phải vào chuyên mục đó mới thấy được bài) như vậy thì cài như thế nào ạ? em cảm ơn
trên wpbeginner có bài viết đấy em: https://www.wpbeginner.com/plugins/how-to-hide-a-post-from-home-page-in-wordpress/#:~:text=You%20will%20notice%20a%20new,and%20then%20save%20your%20post.. Có thể dùng plugin nếu biết cách thêm code thì có thể dùng code họ cung cấp.
Chào anh Thịnh!
Cho tui hỏi thăm chút, giờ muốn giới hạn category hiển thị ở trang chủ thì phải làm thế nào ? Toi tìm hoài mà chẳng thấy hướng dẫn ở đâu cả.
Cảm ơn anh!
Mình chưa hiểu rõ câu hỏi lắm. Nhưng nếu bạn để category ở menu thì bạn vào menu để tùy biến bao nhiêu và những category hiển thị ở menu
Dear Ad, ad cho hỏi nếu show các catelogy ra ngoài 1 page trên menu sẽ làm như thế nào ạ. Ví dụ một mục trang web của em đây: http://www.data.net.vn/van-hoa-xa-hoi/
thì làm sao để hiển thị các catelogy ra ngoài một page đó ạ.
Xin cảm ơn ad
ý bạn là trong nội dung page này bạn sẽ hiển thị danh sách category và đường link dẫn tới category đó à.
Dạ đúng ạ. Hoặc nếu hiển thị bài trong catelogy từng phần trên page thì quá tuyệt luôn ạ
Hiện mình tìm kiếm chỉ có plugin này là có khả năng: https://wordpress.org/plugins/list-category-posts/
Còn không phải động vào code.
Cảm ơn ad, mình đã cài nhưng theme nó chặn không cho hiển thị ad ơi. Mình dùng theme free nên bị giới hạn kể cả cài gg font. ad trợ giúp mình với.
bạn chắc dùng pluign không đúng gì đấy chứ cái này theme không thể chặn được mình test với theme rồi mà. Về cơ bản plugin này dùng với cấu trúc shortcode ví dụ [catlist id=24] hiển thị tất cả các post thuộc cateogry id = 24. Bạn đọc kỹ lại hướng dẫn sử dụng để xem liệu plugin cò phù hợp với mong muốn của bạn hay không. Mà cái google font có plugin rồi bạn cài vào mà sử dụng.
Anh ơi cho e hỏi cách lấy ID bài viết show ra trang chủ với. E đang làm 1 cái widget Bài viết hay và muốn để 5 bài viết. E đang dùng Plugin Visual Composer để tạo widget nhưng cấu hình lấy ID bài viết lại ko hiển thị ra. Mong a chỉ giáo. Thanks
Bạn có thể mô tả kỹ hơn cách bạn sử dụng visual composer tạo custom widget được không nhỉ? Mình sẽ thực hiện bên mình xem sao.