WordPress分页异常:点击‘Older Posts’跳转至空白/page/2/页
解决博客分页/page/2/空白的问题
嘿,碰到分页点击后页面空白的问题确实挺闹心的,我帮你梳理几个最常见的排查和解决方向,都是实战中验证有效的方案:
1. 自定义查询没带上分页参数
很多时候问题出在你自定义的博客文章查询上——如果手动新建了WP_Query或者用了不规范的查询方式,很容易漏掉分页参数。
- 先检查你的查询代码,一定要把
paged参数传进去:
// 获取当前页码,默认是1 $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // 构建查询参数 $blog_args = array( 'posts_per_page' => 6, // 你设置的每页显示数量 'paged' => $paged // 关键!带上分页参数 ); $blog_query = new WP_Query( $blog_args );
- 要是你之前用的是
query_posts(),赶紧换成pre_get_posts钩子修改主查询,这是WordPress官方推荐的规范写法,能避免很多分页坑:
function adjust_blog_posts_per_page( $query ) { // 只修改主查询,且是博客首页/分页页 if ( $query->is_main_query() && ( $query->is_home() || $query->is_paged() ) ) { $query->set( 'posts_per_page', 6 ); } } add_action( 'pre_get_posts', 'adjust_blog_posts_per_page' );
2. 分页函数调用错误
就算查询带了分页参数,分页导航的函数调用不对也会导致空白。
- 如果你用的是自定义查询,分页时要调用自定义查询对象的
max_num_pages,而不是全局的$wp_query:
if ( $blog_query->max_num_pages > 1 ) { echo '<div class="pagination">'; echo paginate_links( array( 'base' => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ), 'total' => $blog_query->max_num_pages, // 用自定义查询的总页数 'current' => max( 1, get_query_var( 'paged' ) ), 'prev_text' => '← 旧文章', 'next_text' => '新文章 →' ) ); echo '</div>'; }
3. 固定链接重写规则失效
有时候WordPress的重写规则没生成,导致/page/2/这种路径无法被正确解析。
- 进入后台「设置」→「固定链接」,随便切换一个选项(比如先选“朴素”),点击保存,然后再切回你原来的固定链接设置,再次保存。这会让WordPress重新生成重写规则,很多时候能解决分页路径的问题。
4. 插件或主题冲突
- 先暂时禁用所有插件,然后测试分页是否正常。如果恢复了,再逐个启用插件,找到冲突的那个插件后,要么更新它,要么换个替代插件。
- 如果禁用插件还是不行,可以临时切换到默认主题(比如Twenty Twenty-Three),看看分页是否正常,排除主题代码的问题。
5. 开启调试模式看具体错误
要是上面的方法都没解决,建议开启WordPress的调试模式,看看空白页面到底是啥错误导致的:
打开wp-config.php文件,找到define( 'WP_DEBUG', false );,改成:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_DISPLAY', true );
刷新/blog/page/2/页面,就能看到具体的错误提示了,根据提示再针对性解决就行。
内容的提问来源于stack exchange,提问作者markclaxton
相关产品推荐
相关产品推荐

