自定义WordPress文章循环分页失效,如何实现分页及调用对应函数?
解决WordPress自定义文章循环的分页问题
嘿,我来帮你搞定这个自定义循环的分页失效问题!你的代码里现在缺少了分页相关的查询参数,也没调用分页函数,所以没法生成正常的分页链接。下面一步步给你讲怎么改:
1. 给WP_Query添加分页核心参数
首先得在$args数组里补上两个关键参数:posts_per_page(设置每页显示的文章数量)和paged(获取当前页码)。修改后的参数应该是这样:
$paged = get_query_var('paged') ? get_query_var('paged') : 1; $args = array( 'post_type' => 'post', 'posts_per_page' => 6, // 改成你想要的每页文章数 'paged' => $paged );
这里get_query_var('paged')会自动获取当前页面的页码,如果是第一页就默认设为1,确保分页逻辑能正确识别当前位置。
2. 在循环结束后调用分页函数
当你的文章循环跑完之后,要调用WordPress自带的the_posts_pagination()函数,它会自动生成适配主题样式的分页链接。另外别忘了用wp_reset_postdata()重置查询,避免影响后续的全局文章数据。
3. 修改后的完整代码
把这些改动整合到你的模板里,最终代码如下:
<?php // Template Name: Blog get_header(); ?> <div id="primary" class="content-area"> <section id="main" class="site-main blog" role="main"> <div class="container"> <div class="row"> <div class="col-lg-9 col-xs-12"> <?php $paged = get_query_var('paged') ? get_query_var('paged') : 1; $args = array( 'post_type' => 'post', 'posts_per_page' => 6, 'paged' => $paged ); $post_query = new WP_Query($args); if($post_query->have_posts() ) { while($post_query->have_posts() ) { $post_query->the_post(); get_template_part('template-parts/content-blog', 'none'); } // 生成分页链接,可自定义文本和样式 the_posts_pagination( array( 'mid_size' => 2, // 中间显示的页码数量 'prev_text' => __('上一页', 'your-theme-slug'), // 替换成你的主题语言标识 'next_text' => __('下一页', 'your-theme-slug') ) ); // 重置全局查询,避免影响后续内容 wp_reset_postdata(); } else { // 没有文章时显示默认空状态 get_template_part('template-parts/content', 'none'); } ?> </div> <div class="col-lg-3 col-xs-12"> <?php dynamic_sidebar( 'blog_sidebar' ); ?> </div> </div> </div> </section><!-- #main --> </div><!-- #primary --> <?php get_footer(); ?>
关键信息总结
- 分页函数名称:推荐用
the_posts_pagination()(适配主题默认样式,省心);如果需要完全自定义分页结构,可以用paginate_links()手动构建。 - 调用位置:必须放在自定义文章循环结束之后,且在
wp_reset_postdata()之前。 - 核心前提:WP_Query的
paged参数是分页生效的关键,一定要添加,不然分页无法识别当前页码。
内容的提问来源于stack exchange,提问作者Aleks Pvn
相关产品推荐
相关产品推荐

