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

WordPress ACF Repeater日期字段:每月仅显示首个条目

解决ACF Repeater日期月份筛选按钮去重问题

要实现每个月份仅显示一个筛选按钮,核心是用数组记录已输出的月份,循环时跳过重复项。修改筛选菜单的代码如下:

<?php if( have_rows('departure_dates') ): ?>

  <div class="tour__dates-filter js-dates">
    <?php 
    // 初始化数组存储已处理的月份(用Y-m格式区分不同年份的同月)
    $seen_months = array();
    ?>

    <?php while( have_rows('departure_dates') ): the_row(); ?>

      <?php 
        $dateMonth = get_sub_field('date', false, false);
        $dateNew = new DateTime($dateMonth);
        // 生成唯一月份标识:如果不需要区分年份,可改为 $month_key = $dateNew->format('M');
        $month_key = $dateNew->format('Y-m');
        $month_label = $dateNew->format('M');
      ?>    

      <?php if( !in_array($month_key, $seen_months) ): ?>
        <button class="tour__dates-filter__item"><span><?php echo $month_label; ?></span></button>
        <?php // 将当前月份加入已处理数组
        $seen_months[] = $month_key;
      ?>
      <?php endif; ?>

    <?php endwhile; ?>

  </div>

<?php endif; ?>

关键说明:

  • 用$seen_months数组记录已经输出过的月份,避免重复渲染按钮
  • 月份标识用Y-m(如2024-01),可以区分不同年份的同一个月份(比如2024年1月和2025年1月会显示两个独立按钮);如果不需要区分年份,直接改成$month_key = $dateNew->format('M')即可
  • 只有当当前月份不在$seen_months数组中时,才渲染按钮,并将该月份加入数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:01:11