我需要为一些自定义帖子分页。。。我不明白为什么,但当我进入下一页时,我会得到404分。这是我的代码:
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
query_posts( array( \'post_type\' => \'s_stories\', \'posts_per_page\' => 4 , \'paged\'=>$paged) );
if (have_posts()){
while (have_posts()) { the_post(); ?>
<div class="post">
<h2 class="title"><a href="<?php echo get_permalink($post->ID); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
</div> <!-- end post -->
<div class="clear"></div>
<?php } } ?>
<div class="paging">
<div style="float:left; font-weight:bold"><?php next_posts_link(\'« Previous Story\') ?></div>
<div style="float:right; font-weight:bold"><?php previous_posts_link(\'Next Story »\') ?></div>
</div>
我有“分页”值和帖子导航,知道现在发生了什么吗。。。。?
谢谢:)
最合适的回答,由SO网友:Stephen Harris 整理而成
Don\'t use query_posts
. 这是一个典型的例子,说明了当您这样做时会发生什么:)
基本上,当WordPress接收到url时,它会将其解释为一个查询,然后查询数据库以查找结果(如果有),并提供一个适当的模板(如果没有结果,则提供404.php)。
如果它碰巧到达您的模板页面,系统会告诉它放弃该查询,然后启动一个新的查询(这是浪费),并将中断分页。
基本上分页添加了paged
当前url的查询变量-此新url(例如,它应该将您带到第2页)-构成了接收第2页的查询的基础-但地址栏中的url不是您要查找的内容(因为您放弃了该内容,然后使用query_posts
. 最终的结果是,执行了一个您并不真正想要的查询,但没有结果,因此提供了404模板,并使用您的query_posts
永远无法到达。
查看上面的链接帖子,了解query_post
, 但由于这是您要使用的“主查询”(基于接收到的url的查询)pre_get_posts
.