WP-Page Navi插件无法正常生成分页,寻求解决方法
嘿,我来帮你搞定这个分页失效的问题!看了你的代码,问题主要出在自定义WP_Query没有配置分页参数,而且调用插件时没关联你的自定义查询,导致插件识别不到分页信息,所以只会显示“Page 1 of 1”。下面一步步给你修复:
问题分析
- 缺少分页核心参数:你的
WP_Query里只加了orderby,但没设置posts_per_page(每页显示多少篇文章)和paged(当前页码),WordPress没法计算总页数,插件自然没法生成分页按钮。 - 插件调用未关联自定义查询:
wp_pagenavi()默认会使用全局的$wp_query对象,但你用了自定义的$loop查询,必须明确告诉插件用哪个查询来生成分页。 - (额外小问题)
the_content()是直接输出内容的函数,不会返回字符串,所以你用$content = the_content();得到的是空值,应该用get_the_content()来获取内容字符串。
修复后的完整代码
<?php // 获取当前页码,首页默认是1 $paged = get_query_var('paged') ? get_query_var('paged') : 1; // 自定义查询,添加分页参数 $loop = new WP_Query(array( 'orderby' => 'ASC', 'posts_per_page' => 5, // 这里设置每页显示的文章数量,可根据需求修改 'paged' => $paged // 关联当前页码 )); ?> <?php if($loop->have_posts() ) : ?> <?php while($loop->have_posts() ) : $loop->the_post(); ?> <article class="article"> <div class="time"><?php the_time('Y-m-d'); ?></div> <div class="h2"><?php the_title(); ?></div> <div class="article__descript"> <?php $content = get_the_content(); // 用get_the_content()获取内容字符串 $test = substr($content, 0, 20); echo $test; ?> </div> </article> <?php endwhile; ?> <?php // 调用wp_pagenavi时,指定使用自定义的$loop查询 wp_pagenavi( array( 'query' => $loop ) ); wp_reset_query(); ?> <?php else : ?> <p>No posts found.</p> <?php endif; ?>
关键改动说明
$paged = get_query_var('paged') ? get_query_var('paged') : 1;:获取当前的页码,确保分页时能正确识别当前页。'posts_per_page' => 5:设置每页显示的文章数,只有当总文章数超过这个数量时,才会生成分页按钮。'paged' => $paged:将当前页码传递给自定义查询,让WordPress知道要加载哪一页的内容。wp_pagenavi( array( 'query' => $loop ) );:告诉WP-Page Navi插件使用你的自定义查询$loop来计算分页信息,而不是默认的全局查询。- 把
the_content()改成get_the_content():这样才能正确获取内容字符串并截取。
按照这个修改后,刷新你的归档页面,只要总文章数超过你设置的posts_per_page数量,分页按钮就会正常显示啦!
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

