WordPress自定义文章类型分页异常:第二页加载错误模板
解决WordPress自定义文章类型buch分页跳转错误问题
排查步骤与解决方案:
检查自定义文章类型注册参数
确认functions.php中注册buch的代码包含正确的归档与重写设置:register_post_type('buch', array( 'labels' => $labels, 'public' => true, 'has_archive' => true, // 必须设为true才能启用归档页 'rewrite' => array( 'slug' => 'buch', 'with_front' => false // 避免与固定链接前缀冲突 ), // 其他参数... ));修正归档模板的查询逻辑
- 若使用主查询:不要在
archive-buch.php中重新创建WP_Query,而是通过pre_get_posts钩子修改主查询参数,避免分页冲突:
在functions.php添加:add_action('pre_get_posts', 'buch_archive_posts_per_page'); function buch_archive_posts_per_page($query) { if (!is_admin() && $query->is_main_query() && is_post_type_archive('buch')) { $query->set('posts_per_page', 5); } } - 若使用自定义查询:确保正确传递
paged参数,并匹配分页函数的配置:// archive-buch.php 中 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $buch_query = new WP_Query(array( 'post_type' => 'buch', 'posts_per_page' => 5, 'paged' => $paged )); // 循环输出文章... // 分页导航 $big = 999999999; echo paginate_links(array( 'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 'format' => '?paged=%#%', 'current' => max(1, $paged), 'total' => $buch_query->max_num_pages )); wp_reset_postdata(); // 重置查询
- 若使用主查询:不要在
刷新固定链接规则
进入WordPress后台 → 设置 → 固定链接,无需修改设置,直接点击「保存更改」,强制刷新重写规则,修复URL解析错误。检查分页函数使用
确保分页导航基于当前查询:- 主查询场景直接使用
the_posts_pagination():the_posts_pagination(array( 'mid_size' => 2, 'prev_text' => '上一页', 'next_text' => '下一页' ));
- 主查询场景直接使用
排查插件冲突
临时禁用所有插件,测试分页是否恢复正常。若正常,逐个启用插件定位冲突源。
请补充以下信息以便精准定位:
functions.php中注册buch自定义文章类型的完整代码archive-buch.php中的查询与分页代码片段
内容的提问来源于stack exchange,提问作者pia-sophie
相关产品推荐
相关产品推荐

