Bạn có muốn chỉ hiển thị danh mục chính cho các bài đăng WordPress của mình không?
Theo mặc định, hầu hết các chủ đề WordPress sẽ liệt kê tất cả các danh mục được liên kết với một bài đăng. Tuy nhiên, một số người dùng có thể chỉ muốn hiển thị danh mục chính và loại trừ các danh mục con.
Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách sửa đổi vòng lặp bài đăng WordPress để chỉ hiển thị danh mục chính trên một bài đăng.
Nhiều chủ sở hữu trang web sử dụng danh mục chính và danh mục con để tạo cấu trúc cho trang web của họ.
Ví dụ: một blog du lịch có thể có các điểm đến du lịch được sắp xếp theo danh mục trong đó mỗi khu vực là danh mục chính và các thành phố là danh mục con.
Tương tự, một blog ẩm thực có thể xuất bản các công thức nấu ăn được sắp xếp theo danh mục cha mẹ và con cái. Ví dụ: danh mục chính có thể là loại món ăn và danh mục con có thể là loại món ăn.
Hiện nay, hầu hết các chủ đề WordPress đều sử dụng thẻ mẫu the_category() để liệt kê tất cả các danh mục được liên kết với một bài đăng.
Chức năng này hiệu quả nhưng nó sẽ hiển thị tất cả các danh mục theo thứ tự bảng chữ cái và hoàn toàn bỏ qua mối quan hệ cha/con.
Như đã nói, chúng ta hãy xem cách thay đổi hành vi này và chỉ hiển thị danh mục chính trong vòng lặp WordPress.
Đối với hướng dẫn này, bạn sẽ cần chỉnh sửa các tệp chủ đề WordPress của mình. Nếu bạn chưa từng làm điều này trước đây, hãy xem bài viết của chúng tôi về cách sao chép và dán đoạn mã trong WordPress.
Trước tiên, bạn cần thêm đoạn mã sau vào tệp tin.php của chủ đề hoặc sử dụng plugin đoạn mã như WPCode (được khuyến nghị):
function wpb_get_parent_terms($taxonomy = 'category')
{
$currentPost = get_post();
$terms = get_the_terms($currentPost->ID, $taxonomy);
if (is_wp_error($terms)) {
/** @var \WP_Error $terms */
throw new \Exception($terms->get_error_message());
}
$map = array_map(
function ($term) use ($taxonomy) {
return '<a href="' . esc_url(get_term_link($term->term_id,
$taxonomy)) . '" title="' . esc_attr($term->name) . '">
' . $term->name . '
</a>';
},
array_filter($terms, function ($term) {
return $term->parent == 0;
})
);
return implode(', ', $map);
}
Để biết thêm chi tiết, hãy xem hướng dẫn của chúng tôi về cách thêm mã tùy chỉnh trong WordPress mà không làm hỏng trang web của bạn.
Mã này chỉ đơn giản là tạo một hàm mới wpb_get_parent_terms(). Theo mặc định, chức năng này sẽ chỉ hiển thị các danh mục chính.
Tiếp theo, bạn cần đặt chức năng này trong các tệp chủ đề WordPress nơi bạn muốn chỉ hiển thị danh mục chính.
Để tìm ra tệp mẫu nào cần xem xét, hãy xem bảng tóm tắt phân cấp mẫu WordPress của chúng tôi dành cho người mới bắt đầu.
Về cơ bản, bạn sẽ tìm kiếm the_category(); thẻ mẫu bên trong vòng lặp WordPress. Khi bạn đã tìm thấy nó, bạn cần thay thế nó bằng đoạn mã sau:
<?php wpb_get_parent_terms(); ?>
Mã này sẽ chỉ hiển thị danh mục chính của bạn. Nếu bạn có nhiều danh mục là danh mục chính hoặc danh mục độc lập thì tất cả các danh mục đó cũng sẽ được hiển thị.
Đoạn mã cũng sẽ hoạt động cho tất cả các nguyên tắc phân loại khác. Ví dụ: danh mục sản phẩm WooC Commerce hoặc bất kỳ phân loại tùy chỉnh nào mà bạn có thể có.
Đơn giản chỉ cần sửa đổi mã như thế này:
<?php wpb_get_parent_terms( 'product_cat '); ?>
Mã này sẽ hiển thị danh mục sản phẩm cho cửa hàng WooC Commerce và sẽ chỉ hiển thị danh mục chính hoặc danh mục độc lập cho một sản phẩm.
Nếu bạn muốn hiển thị phân loại tùy chỉnh, hãy thay thế sản phẩm_cat bằng tên phân loại tùy chỉnh của bạn.
Chúng tôi hy vọng bài viết này đã giúp bạn tìm hiểu cách chỉ hiển thị danh mục chính cho các bài đăng WordPress của bạn. Bạn cũng có thể muốn xem hướng dẫn của chúng tôi về cách hiển thị các trường tùy chỉnh bên ngoài vòng lặp hoặc lựa chọn chuyên gia của chúng tôi về phần mềm chatbot AI tốt nhất cho trang web của bạn.
Nếu bạn thích bài viết này, vui lòng đăng ký Kênh YouTube của chúng tôi để xem video hướng dẫn về WordPress. Bạn cũng có thể tìm thấy chúng tôi trên Twitter và Facebook.