如何避免 WordPress 中出现多个循环的重复帖子显示


您是否正在尝试修复 WordPress 中显示多个循环的重复帖子?

如果您使用多个 WordPress 查询来显示不同的帖子集,那么您可能会遇到重复的内容。这是因为某些帖子可能会匹配多个循环并出现两次。

在本文中,我们将向您展示如何轻松避免 WordPress 中多个循环的重复帖子显示。

重复的帖子如何出现在多个 WordPress 循环中

创建自定义 WordPress 主题或自定义页面模板时,您有时可能需要使用多个 WordPress 循环。

例如,您可能希望在网站最受欢迎的帖子旁边显示您最近的帖子。您还可以通过显示每个类别中的所有帖子来帮助读者找到有趣的内容。

在所有这些示例中,单个帖子可以匹配多个循环的条件。发生这种情况时,WordPress 将显示重复的内容。

这种重复的内容会让您的网站看起来混乱且不专业。它还占用屏幕空间而没有增加价值。

由于您是为每个循环动态生成帖子,因此您无法手动预测重复的帖子是否会出现在多个循环中。

话虽如此,让我们看看在处理 WordPress 中的多个循环时避免重复帖子的简单方法。

避免多个 WordPress 循环中出现重复的帖子

在本指南中,我们将向您展示一些导致重复发布错误的示例 WordPress 代码,然后分享修复该问题的代码片段。

创建 WordPress 子主题或自定义模板时,您的代码可能完全不同。但是,您可以使用我们的代码片段作为起点,然后对其进行修改以适合您自己的网站。

首先,让我们创建一个重复的帖子问题。在下面的示例代码中,我们显示“旅行”类别中的所有帖子和“新闻”类别中的所有帖子,而不避免重复帖子。

/******  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();
?>

如您所见,此代码不会检查任一查询中的重复帖子。

如果一篇文章同时属于“新闻”和“旅游”类别,那么它会出现两次,如下图所示。

让我们解决这个问题。

为了避免 WordPress 博客上出现重复的帖子,您需要临时存储第一个循环中显示的所有帖子的数据。

获得该信息后,您可以修改第二个查询以阻止重复的帖子出现在第二个循环中:

/******  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();
?>

在上面的代码中,我们将帖子 ID 存储在名为 $exclude 的数组中。之后,我们将 post__not_in 参数添加到第二个查询中,这将排除第一个循环中显示的帖子。

现在,如果您访问 WordPress 网站,您会发现重复的帖子已经消失。

我们希望本文能帮助您了解如何避免在 WordPress 中使用多个循环重复显示帖子。您可能还想查看我们关于如何选择最佳网页设计软件的指南,或查看我们专家精选的最佳拖放 WordPress 页面构建器。

如果您喜欢这篇文章,请订阅我们的 WordPress 视频教程 YouTube 频道。您还可以在 Twitter 和 Facebook 上找到我们。