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

WordPress paginate_links点击下一页返回相同10条事件内容

问题原因与解决方案

核心问题

分页失效源于两个关键问题:

  1. 自定义WP_Query未传入当前页码参数,导致每次查询都只返回第一页内容
  2. paginate_links()默认依赖全局主查询的分页数据,未与你的event自定义文章查询关联

修复步骤

1. 给WP_Query添加页码参数

在查询参数中加入paged,获取当前页面的页码值:

// 获取当前页码,首页默认1
$paged = get_query_var('paged') ? get_query_var('paged') : 1;

$wp_query = new WP_Query(array(
  'post_type' => 'event',
  'meta_key' => 'event_date',
  'orderby' => 'meta_value_num',
  'order' => 'ASC',
  'nopaging' => false,
  'paged' => $paged, // 新增页码参数
  'meta_query' => array(
    array(
      'key' => 'event_date',
      'compare' => '>=',
      'value' => $today,
      'type' => 'numeric'
    )
  )
));

2. 让paginate_links关联自定义查询

修改paginate_links()的参数,传入自定义查询的总页数和当前页码,确保分页逻辑与event查询匹配:

echo paginate_links(array(
  'prev_text' => '<span>« Previous</span>',
  'next_text' => '<span>Next »</span>',
  'total' => $wp_query->max_num_pages, // 自定义查询的总页数
  'current' => $paged, // 当前页码
  'base' => get_pagenum_link(1) . '%_%', // 确保链接格式正确,避免参数丢失
));

3. 可选:避免覆盖全局$wp_query

建议改用自定义变量名(比如$event_query),防止与主查询冲突:

// 替换全局$wp_query为自定义变量
$event_query = new WP_Query(array(...));

while($event_query->have_posts()) {
  $event_query->the_post();
  // 循环内容保持不变
}

// 重置查询,恢复全局post数据
wp_reset_postdata();

echo paginate_links(array(
  // 其他参数
  'total' => $event_query->max_num_pages,
  'current' => $paged,
));

完整修复后的代码

<?php
$today = date('Ymd');
// 获取当前页码
$paged = get_query_var('paged') ? get_query_var('paged') : 1;

// 自定义查询,避免覆盖全局$wp_query
$event_query = new WP_Query(array(
  'post_type' => 'event',
  'meta_key' => 'event_date',
  'orderby' => 'meta_value_num',
  'order' => 'ASC',
  'nopaging' => false,
  'paged' => $paged,
  'meta_query' => array(
    array(
      'key' => 'event_date',
      'compare' => '>=',
      'value' => $today,
      'type' => 'numeric'
    )
  )
));

while($event_query->have_posts()) {
  $event_query->the_post();
?>
  <div class="event-summary">
    <a class="event-summary__date" href="<?php the_permalink(); ?>">
      <span class="event-summary__day"><?php
      $eventDate = new DateTime(get_field('event_date'));
      echo $eventDate->format('d') ?></span>  
      <span class="event-summary__month"><?php echo $eventDate->format('M') ?></span>    
      <span class="event-summary__year"><?php echo $eventDate->format('Y') ?></span>    
    </a>
    <div class="event-summary__content">
      <h5 class="event-summary__title headline headline--tiny"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h5>
      <p class="event-summary__excerpt"><?php if (has_excerpt()) {
          echo get_the_excerpt();
        } else {
          echo wp_trim_words(get_the_content(), 18);
        } ?> <a href="<?php the_permalink(); ?>" class="">Læs mere</a></p>
    </div>
  </div>
<?php
}

// 重置查询,恢复全局post数据
wp_reset_postdata();

echo paginate_links(array(
  'prev_text' => '<span>« Previous</span>',
  'next_text' => '<span>Next »</span>',
  'total' => $event_query->max_num_pages,
  'current' => $paged,
  'base' => get_pagenum_link(1) . '%_%'
));
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:16:12