WordPress首页分页异常:点击下一页无法加载相册网格内容求助
解决首页分页无法加载相册网格内容的问题
你猜的完全正确!当访问 /page/2 这类分页页面时,is_home() 和 is_front_page() 确实不会触发你的条件分支——WordPress 会把首页的分页页面视为特殊的归档页面,所以你的 else if( is_home() || is_front_page() ) 不会匹配,自然就不会加载 album-grid.php 模板。下面给你几个具体的解决方案:
方案1:调整index.php的条件逻辑,包含分页页面
最简单的方式是修改你index.php里的条件判断,把首页的分页页面也纳入判断范围。可以调整条件顺序,先排除其他特定页面,剩下的都加载相册网格(包括分页):
// 优先匹配账户页面 if( is_page( 'my-account' ) ) { get_template_part( 'template-parts/my-account', 'account' ); } // 匹配创建相册页面 elseif( is_page( 'create-album') ) { get_template_part( 'template-parts/create-album', 'create-album' ); } // 其他所有情况(包括首页及分页)加载相册网格 else { get_template_part( 'template-parts/album-grid', 'index' ); }
这种方式最省心,只要确保前面的条件已经覆盖了所有非首页的特殊页面,剩下的请求就都会加载相册网格内容。
方案2:利用WordPress模板层级(推荐)
WordPress自带一套自动模板匹配机制,完全可以避免在index.php里写复杂条件:
- 如果你的首页是静态页面:新建一个
front-page.php文件,把相册网格的逻辑直接放到这个文件里,WordPress会自动用它来显示首页(包括所有分页)。 - 如果你的首页是主博客页面:新建一个
home.php文件,同样把相册网格的逻辑放进去,分页页面会自动继承这个模板。
这种方式更符合WordPress的开发规范,后期维护也更简单。
方案3:优化album-grid.php的细节
除了模板加载问题,你的album-grid.php还有两个小问题可以优化:
- 把
wp_reset_query()改成wp_reset_postdata()——wp_reset_query()是用来重置主查询的,自定义WP_Query应该用wp_reset_postdata()来恢复全局$post变量。 - 让分页格式自动适配固定链接设置,避免出现404或跳转异常。
修改后的album-grid.php关键片段:
<?php endwhile; wp_reset_postdata(); ?> </div> <?php } ?> <div class="clear"></div> <?php echo paginate_links( array( 'total' => $posts->max_num_pages, 'mid_size' => 2, // 自动适配固定链接格式 'format' => get_option('permalink_structure') ? 'page/%#%' : '?paged=%#%', 'current' => $paged )); ?>
内容的提问来源于stack exchange,提问作者Subrata Sarkar
相关产品推荐
相关产品推荐

