Cách tránh hiển thị bài đăng trùng lặp với nhiều vòng lặp trong WordPress


Bạn đang cố gắng sửa các bài đăng trùng lặp hiển thị với nhiều vòng lặp trong WordPress?

Nếu bạn đang sử dụng nhiều truy vấn WordPress để hiển thị các nhóm bài đăng khác nhau thì bạn có thể gặp phải nội dung trùng lặp. Điều này là do một số bài đăng có thể khớp với nhiều vòng lặp và xuất hiện hai lần.

Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách dễ dàng tránh hiển thị bài đăng trùng lặp với nhiều vòng lặp trong WordPress.

Cách các bài viết trùng lặp xuất hiện trong nhiều vòng lặp WordPress

Khi tạo chủ đề WordPress tùy chỉnh hoặc 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.

Ví dụ: bạn có thể muốn hiển thị các bài đăng gần đây bên cạnh các bài đăng phổ biến nhất trên trang web của mình. Bạn cũng có thể giúp người đọc tìm thấy nội dung thú vị bằng cách hiển thị tất cả các bài đăng trong mỗi danh mục.

Trong tất cả các ví dụ này, một bài đăng có thể phù hợp với tiêu chí cho 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 trùng lặp 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. Nó cũng chiếm không gian trên màn hình mà không tăng thêm giá trị.

Vì bạn đang tạo động các bài đăng cho mỗi vòng lặp nên bạn không thể dự đoán theo cách thủ công liệu một bài đăng trùng lặp có xuất hiện trong nhiều vòng lặp hay không.

Như đã nói, chúng ta hãy xem xét một cách dễ dàng để tránh các bài đăng trùng lặp khi xử lý nhiều vòng lặp trong WordPress.

Tránh các bài viết trùng lặp trong nhiều vòng lặp WordPress

Đối với hướng dẫn này, chúng tôi sẽ hiển thị cho bạn một số mã WordPress mẫu gây ra lỗi bài đăng trùng lặp và sau đó chia sẻ đoạn mã để khắc phục sự cố.

Khi tạo chủ đề con hoặc mẫu tùy chỉnh WordPress, mã của bạn có thể hoàn toàn khác. Tuy nhiên, bạn có thể sử dụng đoạn mã của chúng tôi làm điểm bắt đầu và sau đó sửa đổi nó để phù hợp với trang web của riêng bạn.

Đầu tiên, hãy tạo một vấn đề về bài viết trùng lặp. Trong mã mẫu sau, chúng tôi đang hiển thị tất cả các bài đăng trong danh mục ‘du lịch’ và tất cả các bài đăng trong danh mục ‘tin tức’ mà không tránh các bài đăng 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, mã này không kiểm tra các bài đăng trùng lặp trong cả hai truy vấn.

Nếu một bài đăng thuộc cả danh mục 'tin tức' và 'du lịch' thì nó sẽ xuất hiện hai lần, như bạn có thể thấy trong hình ảnh sau đây.

Hãy khắc phục vấn đề này.

Để tránh các bài đăng trùng lặp trên blog WordPress của bạn, bạn sẽ cần lưu trữ tạm thời dữ liệu về tất cả các bài đăng được hiển thị trong vòng lặp đầu tiên.

Khi bạn có thông tin đó, bạn có thể sửa đổi truy vấn thứ hai để ngăn các bài đăng 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 mã trên, chúng tôi đang lưu trữ ID bài đăng trong một mảng có tên là $exclude. Sau đó, chúng tôi sẽ thêm đối số post__not_in vào truy vấn thứ hai, đối số này sẽ loại trừ các bài đăng được hiển thị trong vòng lặp đầu tiên.

Bây giờ, nếu bạn truy cập trang web WordPress của mình, bạn sẽ thấy các bài đăng trùng lặp đã biến mất.

Chúng tôi 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. Bạn cũng có thể muốn xem hướng dẫn của chúng tôi về cách chọn phần mềm thiết kế web tốt nhất hoặc xem chuyên gia của chúng tôi lựa chọn các trình tạo trang WordPress kéo và thả tốt nhất.

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.