WordPress实现过期事件隐藏及WP_Query日期查询优化
解决WordPress事件板块无有效事件时标题残留问题
问题描述
网站的事件板块包含“Upcoming Events”标题及下方的即将举办事件,过期事件会自动隐藏,但当没有有效事件可显示时,标题仍会保留。原因是原WP_Query未做日期筛选,仍能识别到已过期的事件帖子,导致标题始终可见。需要修改WP_Query逻辑,加入事件日期与当前日期的对比,实现无有效事件时整个板块隐藏。
修改后的代码
<?php $args = array( 'post_type' => 'event', 'posts_per_page' => 4, // 推荐用posts_per_page替代已废弃的showposts 'meta_key' => 'event_date', 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'event_date', 'value' => date('F j, Y'), 'compare' => '>', 'type' => 'DATE' ) ) ); $events_query = new WP_Query( $args ); ?> <?php if ( $events_query->have_posts() ) : ?> <h2>Upcoming Events</h2> <?php while ( $events_query->have_posts() ) : $events_query->the_post(); ?> <h3><?php the_title(); ?></h3> <a href="<?php the_permalink() ?>">View</a> <?php endwhile; ?> <?php wp_reset_postdata(); ?> <?php endif; ?>
逻辑说明
- 在WP_Query的参数中添加
meta_query,直接筛选出event_date字段值晚于当前日期的事件 - 当没有符合条件的事件时,
$events_query->have_posts()返回false,包裹标题和事件列表的if块不会执行,从而实现整个板块隐藏 - 额外提示:
showposts参数已被WordPress官方废弃,推荐使用posts_per_page替代
内容的提问来源于stack exchange,提问作者Sawyer
相关产品推荐
相关产品推荐

