显示';之后的下一篇文章;do_not_duplicate[]';阻止一个显示


Show next post after 'do_not_duplicate[]' prevents one from showing

我会尽我所能:

我的博客主页有4个"最新来源:(一个类别)"的提要,由4个不同的类别提供,每个类别显示2个帖子。我发现了do_not_duplicate方法,并用它来防止它们中的任何一个出现两次(因为作者在每个帖子上使用多个类别来填充我们的博客)。这很好,但这是我的下一期:

如果一篇文章的主页上有多个类别,它将只在一个类别中发布,而不是重复(根据需要),但它所在的另一个类别现在只显示1篇文章,我希望它显示2篇。由于第二个"丢失"的帖子是重复的,没有显示,我想知道如果重复被隐藏,我如何显示该类别中的下一个(第三个)帖子。

这是我当前的代码:

 <!-- BEGIN WP PHP BLOG INSERT-->

            <?php query_posts('category_name=campuses&showposts=2'); //Get 2 most recent posts from category with slug campuses ?>
            <h2 class="cat"><?php if (have_posts()) single_cat_title("Latest from: ", true) //if there are posts in the category, display the category name in an H2 ?></h2>
            <?php if (have_posts()) while (have_posts()) : the_post(); $do_not_duplicate[] = $post->ID; // prevents the post from showing up twice on home page?> 
            <?php if ( has_post_thumbnail()) : //check to see if the post has a featured image  ?>
            <a class="postthumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >
            <?php the_post_thumbnail(category-thumb); ?>
            </a>
                <?php elseif( catch_that_image() ) : ?>
                <a class="postthumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" ><img height="150px" src="<?php echo catch_that_image() ?>" /></a>
            <?php endif; ?>
            <h3 class="recent"><a href="<?php the_permalink()?>"><?php the_title(); ?></a></h3>
            <?php the_excerpt ()?><br class="clear" />
            <?php endwhile;?>       
            <?php query_posts('category_name=programs&showposts=2'); //Get 2 most recent posts from category with slug programs?>
            <?php if (have_posts()) single_cat_title('<h2 class="cat">Latest from: ', true) //if there are posts in the category, display the category name in an H2 ?></h2>
            <?php if (have_posts()) while (have_posts()) : the_post(); if ( in_array( $post->ID, $do_not_duplicate ) ) continue; // prevents the post from showing up twice on home page?>
            <?php if ( has_post_thumbnail()) : //check to see if the post has a featured image ?>
            <a class="postthumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >
            <?php the_post_thumbnail(category-thumb); ?>
            </a>
                <?php elseif( catch_that_image() ) : ?>
                <a class="postthumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" ><img height="150px" src="<?php echo catch_that_image() ?>" /></a>
            <?php endif; ?>
            <h3 class="recent"><a href="<?php the_permalink()?>"><?php the_title(); ?></a></h3>
            <?php the_excerpt ()?><br class="clear" />
            <?php endwhile;?>                          
            <?php query_posts('category_name=online&showposts=2'); //Get 2 most recent posts from category with slug online?>
            <?php if (have_posts()) single_cat_title('<h2 class="cat">Latest from: ', true) //if there are posts in the category, display the category name in an H2 ?></h2>
            <?php if (have_posts()) while (have_posts()) : the_post(); if ( in_array( $post->ID, $do_not_duplicate ) ) continue; // prevents the post from showing up twice on home page?>
            <?php if ( has_post_thumbnail()) : //check to see if the post has a featured image ?>
            <a class="postthumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >
            <?php the_post_thumbnail(category-thumb); ?>
            </a>
                <?php elseif( catch_that_image() ) : ?>
                <a class="postthumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" ><img height="150px" src="<?php echo catch_that_image() ?>" /></a>
            <?php endif; ?>
            <h3 class="recent"><a href="<?php the_permalink()?>"><?php the_title(); ?></a></h3>
            <?php the_excerpt ()?><br class="clear" />
            <?php endwhile;?>                          
            <?php query_posts('category_name=service-applied-learning&showposts=2'); //Get 2 most recent posts from category with slug service-applied-learning ?>
            <h2 class="cat"><?php if (have_posts()) single_cat_title("Latest from: ", true) //if there are posts in the category, display the category name in an H2 ?></h2>
            <?php if (have_posts()) while (have_posts()) : the_post(); if ( in_array( $post->ID, $do_not_duplicate ) ) continue; // prevents the post from showing up twice on home page?>
            <?php if ( has_post_thumbnail()) : //check to see if the post has a featured image  ?>
            <a class="postthumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >
            <?php the_post_thumbnail(category-thumb); ?>
            </a>
                <?php elseif( catch_that_image() ) : ?>
                <a class="postthumb" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" ><img height="150px" src="<?php echo catch_that_image() ?>" /></a>
            <?php endif; ?>
            <h3 class="recent"><a href="<?php the_permalink()?>"><?php the_title(); ?></a></h3>
            <?php the_excerpt ()?><br class="clear" />
            <?php endwhile;?>       
<?php if( function_exists( 'wp_pagenavi ' ) ) {
     wp_pagenavi();
} else {
     next_posts_link('Older Posts');
     previous_posts_link(' | Newer Posts');
} ?>
         </div>
</div>
    <div class="sidebar-wrapper">
        <?php get_sidebar(); ?>
    </div>

            <!--END WP PHP BLOG INSERT-->

不确定这是否会有所帮助,但看起来您需要重置query_posts();以使其再次干净运行

在每次<?php endwhile;?>之后,您将添加

     <?php wp_reset_query(); ?>

https://codex.wordpress.org/Function_Reference/wp_reset_query

报价:CCD_ 3将CCD_ 4和全局post数据恢复到原始主查询。如果必须使用该函数,则应在query_posts()之后调用该函数。如以下示例所示,强烈建议在进行查询之前使用pre_get_posts过滤器来更改查询参数。

在使用WP_Queryget_posts之后,不需要调用wp_reset_query,因为它们不会修改主查询对象。请改用wp_reset_postdata