每当您访问WordPress中的URL时,WordPress会根据该URL和您的设置自动为您查询正确的帖子。例如,如果您访问example.com/blog
WordPress将查询您最新帖子的X号(在“设置”阅读中定义)。那么如果您访问example.com/blog/page/2
WordPress将查询您最新的帖子,以X为偏移量,获得第二页。这通常称为“主”查询。
要在主查询中循环浏览帖子,可以使用The Loop:
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
注意没有
get_posts()
或
WP_Query
. WordPress已经为该URL查询了正确的帖子,因此您只需使用标准循环即可。
模板的问题是分页链接基于主查询,但模板仅显示get_posts()
. 所以如果你去/page/2
, WordPress将查询第2页的正确帖子,但模板显示的不是这些帖子,而是使用get_posts()
, 它不会基于当前页面更改其参数,因此它们始终是相同的帖子。
解决方案是删除对自定义查询的任何引用,并使用主循环:
<?php while ( have_posts() ) : the_post() ; ?>
<div class="blogrollentry">
<p class="blogrolltitle"><?php the_title(); ?></p>
<div class="container-fluid no-padding">
<?php if ( has_post_thumbnail() ) { the_post_thumbnail(\'post-thumbnail\', array(\'class\' => \'blogpostimage1\')); } else { ?>
<img src="<?php bloginfo(\'template_directory\'); ?>/images/temp-h.jpg" class="blogpostimage1" alt="<?php the_title(); ?>" />
<?php } ?>
</div>
<p><?php echo intro_textblog(350); ?></p>
<a class="btn btn-block btn-outline-dark my-2 my-sm-0 biggertext" href="<?php echo get_permalink(); ?>">Read More</a>
</div>
<?php endwhile; ?>
<?php if ( $wp_query->max_num_pages > 1 ) : ?>
<div id="nav-below" class="navigation">
<div class="nav-previous"><?php next_posts_link( __( \'<span class="meta-nav">←</span> Older posts\', \'BTC\' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( \'Newer posts <span class="meta-nav">→</span>\', \'BTC\' ) ); ?></div>
</div><!-- #nav-below -->
<?php endif; ?>