我正在尝试仅接收来自Wordpress中某个页面的未来事件的帖子。我有一个日期自定义字段,可让我在将来设置日期,以便与今天的日期进行比较:
<?php
$date = new DateTime();
$posts = get_posts(array(
'posts_per_page' => -1,
'post_type' => 'post',
'post_status' => 'publish',
'category_name' => 'event',
'meta_key' => 'date',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'meta_query' => array(
'key' => 'date',
'value' => $date->getTimestamp(),
'type' => 'NUMERIC',
'compare' => '>'
)
)); ?>
这仍然显示所有帖子,有人可以告诉我哪里出错了吗?
答案 0 :(得分:1)
如果您的date
字段是ACF DatePicker字段,那么您将需要这样的内容。 DatePicker字段不将值存储为时间戳,而是以Ymd
格式存储。
$upcoming_events = get_posts( array(
'post_type' => 'event',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_key' => 'date',
'orderby' => 'meta_value_num',
'order' => 'asc',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'date',
'compare' => '>=',
'value' => date( 'Ymd' ),
)
),
) );
答案 1 :(得分:0)
如果有人发现这个有用,这就是我解决的问题:
<?php
$date = new DateTime();
$today = $date->getTimestamp();
$posts = get_posts(array(
'posts_per_page' => -1,
'post_type' => 'post',
'post_status' => 'publish',
'category_name' => 'event',
'meta_key' => 'date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'date',
'compare' => '>=',
'value' => $today,
)
)
));
?>