You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress单页能否同时实现按月份和按页码两种分页功能

WordPress单页同时实现月份+页码分页的解决方法

WordPress完全支持在单页同时实现按月份归档筛选、按页码分页两种功能。你遇到的跳转后无内容加载问题,是因为直接调用无参数的paginate_links()会丢失月份筛选参数,同时默认主查询没有适配自定义reviews文章类型的分页规则导致的,按以下步骤修改即可修复:

步骤1:在主题functions.php中添加查询预处理钩子

这段代码会在主查询执行前自动适配reviews文章类型的分页、月份筛选规则:

add_action('pre_get_posts', 'custom_reviews_archive_query');
function custom_reviews_archive_query($query) {
    // 仅对前台reviews文章类型的主查询生效
    if (!is_admin() && $query->is_main_query() && get_query_var('post_type') == 'reviews') {
        // 自定义每页显示文章数,可自行调整数值
        $query->set('posts_per_page', 10);
        // 绑定分页参数
        $paged = get_query_var('paged') ? get_query_var('paged') : 1;
        $query->set('paged', $paged);
    }
}

步骤2:修改页面模板中的分页代码

替换你原来的<?echo paginate_links();?>部分,完整页面代码如下:

<?php
// 输出月份归档导航
$args = array(
  'post_type'    => 'reviews',
  'type'         => 'monthly',
  'echo'         => 0
);
echo wp_get_archives($args); 
?>

<div class="row reviews-items">
  <?php while (have_posts()) : the_post(); ?>
   <div class="reviews-item-title"><?php the_title(); ?></div>
   <div class="reviews-item-text"><?php the_content(); ?>
  <?php endwhile; ?>
</div>

<?php
// 修复后的分页代码,自动保留月份筛选参数
global $wp_query;
$big = 999999999;
$paginate_args = array(
    'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
    'format' => '?paged=%#%',
    'current' => max(1, get_query_var('paged')),
    'total' => $wp_query->max_num_pages,
    // 保留当前月份筛选参数
    'add_args' => array(
        'm' => get_query_var('m')
    )
);
echo paginate_links($paginate_args);
?>

注意事项

  • 如果你是用自定义页面模板而非reviews默认归档模板实现的功能,需要在pre_get_posts的判断条件中补充is_page('你的页面别名')
  • 如果分页跳转后仍然丢失月份参数,可以检查wp_get_archives生成的链接里的月份参数名,默认参数名为m,如果有自定义修改对应调整add_args里的键名即可
  • 不要单独新建WP_Query实例后直接调用默认分页函数,否则需要将自定义查询的max_num_pages传给分页参数,避免总页数不匹配

内容的提问来源于stack exchange,提问作者Svetlana Kudryavtseva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:15:07