我有一个名为“事件”的自定义帖子类型。所有这些事件页面都有一个 ACF 日期字段,用于输入事件开始日期。在事件存档页面中,我想将这些事件分成两组。
- 即将举办的事件 - 根据当前日期检查事件日期。
- 已完成的事件 - 过去的事件。
So Coming Soon 事件将是这样的:
<?php
$today = date('Ymd');
$args = array(
'post_type' => 'events',
'nopaging' => true,
'orderby' => 'meta_value_num',
'meta_key' => 'event_start_date', //ACF date field
);
$upcoming_events = new WP_Query( $args );
if ( $upcoming_events->have_posts() ) :
?>
<h2>Upcoming Events</h2>
<ul>
<?php while ( $upcoming_events->have_posts() ) : $upcoming_events->the_post(); ?>
<li>
Title: <?php the_title(); ?><br>
Date: <?php echo get_field('event_start_date'); ?>
</li>
<?php endwhile; wp_reset_postdata(); ?>
</ul>
<?php endif; ?>
我知道有 meta_query 可以做到这一点。
'meta_query' => array( array(
'key' => 'event_start_date',
'value' => '',
'compare' => '',
)),
但我不确定如何将事件日期与当前日期进行比较。任何帮助将不胜感激。
最佳答案
在@Wilco 的帮助下,我设法解决了这个问题。所以我在这里发布答案以防其他人遇到同样的问题。
<?php
$today = date('Ymd');
$args = array(
'post_type' => 'events',
'nopaging' => true,
'orderby' => 'meta_value_num',
'meta_key' => 'event_start_date', //ACF date field
'meta_query' => array( array(
'key' => 'event_start_date',
'value' => $today,
'compare' => '>=',
'type' => 'DATE'
))
);
$upcoming_events = new WP_Query( $args );
if ( $upcoming_events->have_posts() ) :
?>
<h2>Upcoming Events</h2>
<ul>
<?php while ( $upcoming_events->have_posts() ) : $upcoming_events->the_post(); ?>
<li>
Title: <?php the_title(); ?><br>
Date: <?php echo get_field('event_start_date'); ?>
</li>
<?php endwhile; wp_reset_postdata(); ?>
</ul>
<?php endif; ?>
在这里回答 - https://wordpress.stackexchange.com/questions/11173/what-is-the-correct-way-to-compare-dates-in-a-wp-query-posts-meta-query有更多关于 meta_query 的细节。
关于php - 根据 ACF 日期字段值过滤自定义帖子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63870725/