Two loops on archive page

时间:2017-01-22 作者:ali

我在归档页面上有2个循环。我希望第一个循环显示类别的最后两个帖子,第二个循环偏移2个帖子!

<div class="top-posts">
    <?php
    if (have_posts()) :
        while(have_posts()) : the_post();?>
            <div class="content">
                <?php the_post_thumbnail(\'archive\'); ?>
                <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            </div>
        <?php endwhile;?>
    <?php endif;?>
</div>

<div class="primary-posts">
    <?php
    if (have_posts()) :
        while(have_posts()) : the_post();?>
            <h2><a href="<?php the_permalink(); ?>" ><?php the_title(); ?></a></h2>
        <?php endwhile;?>
    <?php endif;?>
</div>

2 个回复
SO网友:fergbrain

用完循环后,需要使用rewind_posts() 在进入第二个循环之前:

<?php
rewind_posts();
if (have_posts()) :
    while(have_posts()) : the_post();?>
        <h2><a href="<?php the_permalink(); ?>" ><?php the_title(); ?></a></h2>
    <?php endwhile;?>
<?php endif;?>

SO网友:cjbj

从你的问题来看,不清楚你要准确选择哪些帖子。在任何情况下,您显然希望显示不同于归档页面上通常显示的帖子。这意味着您需要在模板中使用wp_query. 诀窍是选择正确的参数。

首先,为了以后使用,我们需要从主归档循环中检索归档的ID。这将返回category archive页面上的category ID(或tage archive页面上的tag ID,依此类推)

$cat_id = $wp_query->get_queried_object_id()
现在,我们可以构建正确的参数来选择该类别中的前两个条目,并在单独的循环中显示它们,如下所示:

$args = array (
  \'cat\'            => $cat_id,
  \'posts_per_page\' => 2,
  ) 

$the_query = new WP_Query ($args);
if ($the_query->have_posts()) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        // display stuff
        }
    wp_reset_postdata(); // restore the original archive loop
    }
如果您想在此类别存档页面上选择所有帖子,而不考虑类别,您可以重复上述操作,但保留“cat”行$args 出来

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp