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>
关键修改说明:
新增日期筛选逻辑:通过
meta_query实现核心需求:- 用
date('Ymd')生成与ACF存储格式一致的当前日期字符串 - 利用通配符
%匹配ACF重复器的所有子字段(ACF重复器子字段存储格式为{重复器名}_{索引}_{子字段名}) - 通过
>=比较符,确保只保留至少有一个未过期日期的活动文章
- 用
代码简化:去掉冗余的
echo,the_title()函数本身会直接输出标题内容
注意事项:
- 必须将
event_dates_%_event_date中的event_dates替换为你实际使用的ACF重复器字段名称 - 确认服务器时区与业务时区一致,避免日期判断偏差
内容的提问来源于stack exchange,提问作者User_FTW
相关产品推荐
相关产品推荐

