WordPress首页分页切换时固定内容重复显示解决方法
问题原因
首页模板中的固定静态内容未做分页状态判断,无论当前访问的是第几页,这部分代码都会被直接执行输出,和你实现的文章列表分页逻辑本身无关。
实现方案
核心逻辑:仅当访问首页第1页时渲染固定静态内容,分页页码大于1时跳过静态内容输出,只加载对应页码的文章列表。
具体修改步骤如下:
- 先做兼容式页码获取,同时适配WordPress两种首页模式(最新文章首页、静态页面首页)的分页参数,避免页码识别失效
- 给首页固定静态内容增加第一页判断逻辑,把所有不需要在分页页显示的内容包裹在判断条件内
- 修正自定义文章查询、分页组件的页码传参,替换为兼容后的页码变量,避免分页异常
修正后代码参考
<?php global $post; // 兼容两种首页模式获取当前页码 $current_page = max(1, get_query_var('paged') ? get_query_var('paged') : get_query_var('page')); // 仅第一页输出固定静态内容,以下大括号内放你所有首页专属固定内容 if ($current_page === 1) { // 例:首页Banner、站点介绍、固定推荐模块等原有静态内容全部放在这里 ?> <!-- 这里写你原有静态内容的HTML/PHP代码 --> <?php } // 以下为文章列表逻辑,所有分页状态下都会渲染 $args = array( 'paged' => $current_page, // 替换为兼容处理后的页码变量 'post_type'=> 'post', 'post_status' => 'publish', 'posts_per_page' => 6, ); $result = new WP_Query( $args ); if($result->have_posts()){ while($result->have_posts()){ $result->the_post(); $count = get_post_meta( get_the_ID(), 'post_views_count', true ); $post_thumbnail_id = get_post_thumbnail_id( $post->ID ); ?> <div class="post-content <?php the_ID();?>"> <?php if(!empty($post_thumbnail_id)) { $img_ar = wp_get_attachment_image_src( $post_thumbnail_id, 'medium' ); ?> <img src="<?php echo $img_ar[0];?>"> <?php }?> <h2 class="title"><?php the_title() ?></h2> <p class="author">By <?php the_author();?></p> <p class="date"> <?php the_date()?> </p> <p class="views"> <?php echo gapp_get_post_pageviews(); ?> Views </p> <p> <?php the_excerpt();?> </p> </div> <?php } $big = 999999999; $total_pages = $result->max_num_pages; if ($total_pages > 1){ echo paginate_links(array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => $current_page, // 替换为兼容处理后的页码变量 'total' => $total_pages, 'mid_size' => 5, 'end_size' => 2, 'prev_next' => true, 'prev_text' => __('PREV'), 'next_text' => __('NEXT'), )); } wp_reset_postdata(); } ?>
注意事项
- 不要将文章列表、分页组件的代码放入第一页的判断条件内,否则分页页将无法正常显示文章内容
- 如果站点配置了伪静态,修改后如果出现分页404,可到WordPress后台「设置-固定链接」页面点击保存,刷新重写规则即可
- 必须保留
wp_reset_postdata()逻辑,避免自定义查询污染全局主查询,导致其他页面功能异常
内容的提问来源于stack exchange,提问作者Gerald Yvan Cabarrubias
相关产品推荐
相关产品推荐

