Hiện nay, việc tránh hiển thị bài viết trùng lặp trên WordPress là một thách thức quan trọng. Bài viết trùng lặp không chỉ làm mất đi giá trị của nội dung mà còn có thể gây nhầm lẫn và tổn thất trong SEO. Trong bài viết này, hãy cùng Vietnix tìm hiểu cách tạo ra nội dung độc đáo và tránh những sai sót phổ biến khi quản lý bài viết trên WordPress, đem lại nội dung tối ưu nhất cho website.
Tại sao bài viết lại hiển thị trùng lặp trong WordPress?
Khi tạo một theme WordPress tùy chỉnh hoặc một mẫu trang tùy chỉnh, đôi khi bạn có thể cần sử dụng nhiều vòng lặp WordPress (WordPress loop). Chẳng hạn như khi bạn có thể muốn hiển thị các bài viết gần đây của mình cùng với những bài viết phổ biến nhất trên website. Bạn cũng có thể giúp độc giả tìm kiếm nội dung thú vị bằng cách hiển thị tất cả các bài viết trong mỗi danh mục.
Trong tất cả các ví dụ này, một bài viết duy nhất có thể phù hợp với nhiều vòng lặp. Khi điều này xảy ra, WordPress sẽ hiển thị nội dung trùng lặp. Nội dung này có thể làm cho trang web của bạn trông lộn xộn và không chuyên nghiệp. Và cũng chiếm không gian trên màn hình nhưng không thêm giá trị. Vì bạn đang tạo ra các bài viết cho mỗi vòng lặp, bạn không thể dự đoán thủ công liệu một bài viết trùng lặp sẽ xuất hiện trong nhiều vòng lặp.
Cách tránh hiển thị bài viết trùng lặp trong WordPress hiệu quả
Trong hướng dẫn này, Vietnix sẽ hiển thị cho bạn một số đoạn code mẫu trên WordPress gây ra lỗi bài viết trùng lặp, sau đó chia sẻ một đoạn code để sửa vấn đề này. Khi tạo một child theme hoặc template tùy chỉnh trên WordPress, đoạn code của bạn có thể hoàn toàn khác nhau. Tuy nhiên, bạn có thể sử dụng đoạn code mẫu này như một điểm khởi đầu và sau đó sửa đổi để phù hợp với website của mình.
Trước hết, chúng ta hãy tạo ra một vấn đề về bài viết trùng lặp. Trong đoạn code mẫu dưới đây, Vietnix đang hiển thị tất cả các bài viết trong danh mục ‘travel‘ và tất cả các bài viết trong danh mục ‘news‘ mà không tránh bài viết trùng lặp.
/****** The First Query *******/
$first_query = new WP_Query( array (
'category_name' => 'news',
'posts_per_page' => 3
));
// The Loop
if ( $first_query->have_posts() ) {
echo '<ul>';
while ( $first_query->have_posts() ) {
$first_query->the_post();
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title();
echo '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
/****** The Second Query *******/
$second_query = new WP_Query( array (
'category_name' => 'travel',
'posts_per_page' => 3
) );
// The Loop
if ( $second_query->have_posts() ) {
echo '<ul>';
while ( $second_query->have_posts() ) {
$second_query->the_post();
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title();
echo '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>
Như bạn có thể thấy, đoạn code này không kiểm tra bài viết trùng lặp trong cả hai truy vấn. Nếu một bài viết thuộc cả danh mục ‘news‘ và ‘travel‘, thì chúng sẽ xuất hiện hai lần, như bạn có thể thấy trong hình ảnh dưới đây:
Để tránh hiển thị bài viết trùng lặp trên blog WordPress, bạn sẽ cần tạm thời lưu trữ dữ liệu về tất cả các bài viết được hiển thị trong vòng lặp đầu tiên. Khi đã có thông tin đó, bạn có thể sửa đổi truy vấn thứ hai để ngăn bài viết trùng lặp xuất hiện trong vòng lặp thứ hai:
/****** The First Query *******/
$first_query = new WP_Query( array (
'category_name' => 'news',
'posts_per_page' => 3
) );
// The Loop
if ( $first_query->have_posts() ) {
echo '<ul>';
while ( $first_query->have_posts() ) {
$first_query->the_post();
// Store Post IDs in an Array to reuse later
$exclude[] = $post->ID;
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title();
echo '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
/****** The Second Query *******/
$second_query = new WP_Query( array (
'category_name' => 'travel',
'post__not_in' => $exclude, // Tell WordPress to Exclude these posts
'posts_per_page' => 3
) );
// The Loop
if ( $second_query->have_posts() ) {
echo '<ul>';
while ( $second_query->have_posts() ) {
$second_query->the_post();
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title();
echo '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>
Trong đoạn code trên, hiện đang lưu trữ ID bài viết trong một mảng có tên $exclude
. Sau đó, sẽ thêm post__not_in
đối số vào query thứ hai, query này sẽ loại các bài viết được hiển thị trong vòng lặp đầu tiên. Bây giờ hãy truy cập lại website của mình, bạn sẽ thấy các bài viết trùng lặp đã biến mất.
Ngoài những thông tin có trong bài về cách tránh hiển thị bài viết trùng lặp, bạn có thể quan tâm:
Lời kết
Vietnix hy vọng bài viết này đã giúp bạn tìm hiểu cách tránh hiển thị bài đăng trùng lặp với nhiều vòng lặp trong WordPress. Đồng thời, bạn cũng có thể tham khảo thêm các bài viết khác như hướng dẫn cách ẩn 1 trang WordPress khỏi Google hoặc cách ẩn bài đăng từ trang chủ trong WordPress, nhằm tối ưu cho website tốt hơn. Chúc bạn thành công!