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

WordPress查询:排除ACF日期子字段全部过期的文章

解决方案:过滤掉所有日期已过期的活动文章

以下是修改后的代码,会自动排除所有event_date子字段日期均已过期的文章:

<ul class="event-category-list no-margin no-list-style">
<?php 
    $current_category = get_queried_object();
    $today = date('Ymd'); // 获取当前日期,格式与ACF存储的event_date保持一致
    $args = array(
        'post_type'         => 'event',
        'posts_per_page'    => -1,
        'tax_query'         => array(
            array(
                'taxonomy' => 'event-type',
                'field'    => 'term_id',
                'terms'    => $current_category->term_id,
            ),
        ),
        'meta_query'        => array(
            array(
                // 替换规则:{你的ACF重复器字段名}_%_{子字段名event_date}
                // 示例:若重复器字段叫event_schedule,则写event_schedule_%_event_date
                'key'     => 'event_dates_%_event_date', 
                'value'   => $today,
                'compare' => '>=',
                'type'    => 'DATE',
            ),
        ),
    );
    $query = new WP_Query($args);
    while ($query->have_posts()) : $query->the_post();
?>
        <li>
            <?php the_title(); // the_title()自带echo,无需额外输出 ?>
        </li>
    <?php endwhile;
    wp_reset_postdata();
?>
</ul>

关键修改说明:

  1. 新增日期筛选逻辑:通过meta_query实现核心需求:

    • 用date('Ymd')生成与ACF存储格式一致的当前日期字符串
    • 利用通配符%匹配ACF重复器的所有子字段(ACF重复器子字段存储格式为{重复器名}_{索引}_{子字段名})
    • 通过>=比较符,确保只保留至少有一个未过期日期的活动文章
  2. 代码简化:去掉冗余的echo,the_title()函数本身会直接输出标题内容

注意事项:

  • 必须将event_dates_%_event_date中的event_dates替换为你实际使用的ACF重复器字段名称
  • 确认服务器时区与业务时区一致,避免日期判断偏差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:42:49