防止在主页上显示重复标题

时间:2019-04-21 作者:m.javad koushki

我在我的网站上使用了一个自动rss帖子阅读器,这个插件有一个问题,有时会发布重复的帖子。我不能对这个插件做任何事情,但如果我能阻止在主页上显示相同的标题,至少会更好。这是我的密码

 <ul>
<?php  
                    $portfolio = new WP_Query(array(
                    \'post_status\' =>\'publish\',
                    \'post_type\' =>\'post\',
                    \'cat\' =>\'\'.$link1.\'\',
                    \'posts_per_page\' =>\'9\'      
                    ));
 if($portfolio->have_posts()) : 
                    while($portfolio->have_posts()) : $portfolio->the_post();
                                    ?>
<li>
<a href="<?php the_permalink() ?>" target="_blank"><?php the_title(); ?></a>
</li>
<?php endwhile; endif; wp_reset_query(); ?>
</ul>

see the example of problem on the image

2 个回复
最合适的回答,由SO网友:Qaisar Feroz 整理而成

您的代码应该如下所示,以排除重复的标题

<ul>
    <?php
    // Initial counter for displayed posts.
    $counter = 1;
    // Initial empty array of displayed titles.
    $titles = [];

    $portfolio = new WP_Query([
        \'post_status\' => \'publish\',
        \'post_type\' => \'post\',
        \'cat\' => \'\' . $link1 . \'\',
        // Because we don\'t know the number of duplicate titles, fetch all.
        \'posts_per_page\' => -1,
    ]);

    if ( $portfolio->have_posts() ) :

        // Start the loop.
        while ( $portfolio->have_posts() ) : $portfolio->the_post();

            // If the current title has not been displayed already, display it.
            if ( ! in_array( get_the_title(), $titles ) ) {
                ?>
                <li>
                    <a href="<?php the_permalink(); ?>" target="_blank">
                        <?php the_title(); ?>
                    </a>
                </li>
                <?php
                // Mark current title as displayed by adding it to the titles array.
                $titles[] = get_the_title();
                // Increase counter.
                $counter++;

            }

            // When we have displayed 10 posts the loop should stop.
            if ( $counter == 10 ) {
                break;
            }

        endwhile; endif;
    wp_reset_query(); ?>
</ul>
我希望这能有所帮助!

SO网友:leymannx

你必须以某种方式获得想要排除的帖子ID。通过调用插件的WP_Query 再举个例子,最多只返回post ID\'fields\' => \'ids\' 这一次。

然后,您可以使用结果将这些帖子从其他查询中排除,方法是将帖子ID数组传递给\'post__not_in\'. 所以,假设您创建了一个要排除的帖子数组,如下所示$exlcude = [ 123, 456, 789 ] 然后查询需要如下所示:

$args = array(
    \'post_status\' =>\'publish\',
    \'post_type\' =>\'post\',
    \'cat\' => $link1,
    \'posts_per_page\' => \'9\',      
);

if ( ! empty( $exclude ) ) {
    $args[\'post__not_in\'] = $exclude;
}

new WP_Query($args);

相关推荐

Duplicates with WP_Query loop

我在头版上只显示带有特色图片的帖子。我的问题是,每次加载下一个页面时,我都会收到相同的结果,也就是得到重复的结果。我正在使用按自定义字段排序。欢迎任何可能导致此问题的指示/想法。下面是我的主循环// Layout if(is_category()) { $post_layout = blt_get_option(\'category_post_layout\', \'normal\'); } elseif(is_author()) {