$wp_Query->CURRENT_POST在分页页面上从零重新启动

时间:2011-07-10 作者:mikkelbreum

我知道在使用

$wp_query->current_post
Bu这将在后续分页页面上从零开始重新启动计数。因此,如果我有20篇帖子,并且每页显示5篇帖子,那么在第2页上,帖子的编号是0-4,而不是5-9。

我的问题是:当在分页页面上运行循环时,是否有一种内置的方法来获取绝对索引,或者我是否必须使用有关页码和每页帖子的信息自己计算偏移量?

2 个回复
SO网友:Rarst

$wp_query->current_post 保存有关循环中当前帖子的信息,而不是全局帖子集的信息。在多个页面上计算帖子的数量在本机上是不可用的(据我所知),而且可能是不可靠的(例如,如果每页的帖子数量被定制为不均匀会怎么样?)。

对于特定的实现,基于页码构建自定义编号可能是唯一的选择。

至于胶粘物,您可以通过以下方式检索其数量count( get_option(\'sticky_posts\') ) 并以此调整编号。

SO网友:mikkelbreum

希望有人能提供更好的答案,但目前我正在这样做:

// We\'re about top start The Loop.
// Setting up a counter to keep track of the posts being processed
// We can\'t just use current_post as it start from zero on subsequent paged pages.

$paged_no = ($wp_query->query_vars[\'paged\'] < 2 ) ? 0 : $wp_query->query_vars[\'paged\'] -1 ;
$current_offset = $paged_no * $wp_query->query_vars[\'posts_per_page\'];
然后在循环内部:

$absolute_post_index = $wp_query->current_post+$current_offset+1;
这在没有粘性贴子的情况下有效。如果有,它们将被粘在第一页上。这意味着,如果每页有5篇帖子,并且有一篇粘性帖子,那么第一页将显示6篇帖子,后续页面将显示5篇帖子。在这种情况下,第一页的帖子编号为0-5,第二页的帖子编号为5-9,因为不再考虑粘性帖子。这是一个问题,因为这意味着相同的索引将在第1页的最后一篇文章和第2页的第一篇文章中重复。

结束

相关推荐

Get paged outside of loop?

是否可以在标准WP循环之外进行寻呼?我已经在循环中使用了:<?php if ( $paged >= 2 ) { ?> Some text for the 2nd page on up <?php } ?> 但我希望能够在第二页或更大的所有页面上,在循环之外回显一些文本。可能的还是更好的方法?