WordPress自定义博客页面上下页导航失效问题
解决WordPress自定义博客页面的分页失效问题
嘿,我看到你在自定义WordPress博客页面时碰到了分页失效的问题——这真的是自定义模板里最容易踩的坑之一,我来给你拆解下核心问题和修复方案:
核心问题分析
你的现有代码里大概率缺少了分页必需的查询参数,而且没有正确使用自定义查询实例,导致WordPress无法识别当前页码和总页数,自然就没法生成有效的分页导航。
修复后的完整模板代码
我把你的代码补全并修复了分页逻辑,你可以直接参考:
<?php /* Template Name: My Blog Page */ get_header(); ?> <div class="container-fluid"> <div class="row bkg-grey"> <div class="container"> <div class="row"> <div class="col-md-8"> <div class="row"> <?php // 1. 获取当前页码,处理首页的默认情况 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // 2. 完善查询参数,加入分页核心参数 $args = array( 'post_type' => 'post', 'paged' => $paged, // 关键:告诉WordPress当前要加载第几页 'posts_per_page' => 6 // 可选:自定义每页显示的文章数,默认取后台设置 ); // 3. 使用自定义WP_Query实例,不要直接修改主查询 $custom_blog_query = new WP_Query($args); if ($custom_blog_query->have_posts()) : // 循环输出文章内容 while ($custom_blog_query->have_posts()) : $custom_blog_query->the_post(); ?> <div class="col-md-12 mb-4"> <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> <div class="post-meta"> <?php echo get_the_date(); ?> | <?php the_author(); ?> </div> <?php the_excerpt(); ?> </div> <?php endwhile; // 4. 生成分页导航 the_posts_pagination(array( 'mid_size' => 2, // 显示当前页前后各2个页码 'prev_text' => '« 上一页', 'next_text' => '下一页 »' )); // 5. 重置查询,避免影响后续的WordPress功能 wp_reset_postdata(); else : // 没有文章时的提示 echo '<p class="col-md-12">暂无文章</p>'; endif; ?> </div> </div> <!-- 侧边栏(如果需要的话) --> <div class="col-md-4"> <?php get_sidebar(); ?> </div> </div> </div> </div> </div> <?php get_footer(); ?>
关键注意事项
- 必须加入
paged参数:这是让WordPress识别当前页码的核心,没有它分页永远不会工作 - 使用自定义WP_Query:不要直接修改主查询(比如
query_posts),否则会破坏WordPress的原生查询逻辑,导致分页失效 - 重置查询:循环结束后一定要调用
wp_reset_postdata(),确保后续的模板标签(比如侧边栏、页脚)能正常工作 - 检查固定链接设置:去后台「设置→固定链接」,不要用「朴素」模式,建议选「文章名称」,否则分页的URL参数可能被WordPress忽略
如果你的分页还是有问题,可以检查下后台「设置→阅读」里的「博客页面至多显示」设置,确保和代码里的posts_per_page值匹配(或者直接在代码里指定posts_per_page来覆盖后台设置)。
内容的提问来源于stack exchange,提问作者James Paul
相关产品推荐
相关产品推荐

