为最近发布的六篇帖子制作不同的模板

时间:2013-06-15 作者:idontknowhow

我想让最后六篇文章的模板与其他文章的模板不同,但我无法让它工作。下面是我在索引中插入的循环代码。php

$last_no_of_posts = 6;
$ctr = 0;

while ( have_posts() ) { the_post(); 

   if ($ctr < $wp_query->found_posts - $last_no_of_posts) {
      // require special template
      get_template_part( \'loop\', \'special\' );
   } else {
      // regular template
      get_template_part( \'loop\', \'index\' );
   }
   $ctr++;

}

1 个回复
SO网友:s_ha_dum

如前所述,您正在对照计数器检查邮件总数。也就是说,$wp_query 是查询的总发布计数,而不是每页计数。

现在,假设查询中总共有30篇文章,每页10篇。你的计数器开始,一直到10,但是$ctr < $wp_query->found_posts - $last_no_of_posts 永远是真的。$ctr 循环结束时将为10,但是$wp_query->found_posts - $last_no_of_posts 将是30-10或20。第二页的结果也是如此,因为计数器重新开始。之后的页面也一样。在这种情况下,很多人都喜欢,$ctr 始终小于found_posts 减去你的计数器。识别最后六个结果的唯一方法是,如果所有结果都在一个页面上,则不分页。也许这就是你正在做的,这就是你想要的。

但是,如果需要标识分页的每个页面上的最后六个,则需要重写它以使用post_countfound_posts:

while ( have_posts() ) { the_post(); 

   if ($ctr < $wp_query->post_count - $last_no_of_posts) {
      // require special template
      get_template_part( \'loop\', \'special\' );
   } else {
      // regular template
      get_template_part( \'loop\', \'index\' );
   }
   $ctr++;

}
如果要在分页的最后一页上显示最后六个,则需要(未测试):

if ($wp_query->current_post >= $wp_query->found_posts - $last_no_of_posts) {

结束

相关推荐

2 loops in blog homepage

I would like to have to query loops running on my blog homepage:Featured posts on top displaying 3 posts from the category : \"Featured\"Underneath it just the basic loop of wordpress which display the latest (10 or other, whatever is selected within the