我希望根据我设置的自定义日期字段隐藏过去的事件。
<?php
the_post();
// Get 'events' posts
$events_posts = get_posts( array(
'post_type' => 'events',
'posts_per_page' => -4, // Unlimited posts
'orderby' => 'meta_value',
'meta_key' => 'event_date',
'order' => 'ASC'
) );
if ( $events_posts ):
?>
此代码目前按顺序显示我的事件,但我想隐藏比今天更早的事件?
答案 0 :(得分:1)
如果您想按自定义帖子字段过滤数据,则必须使用meta_query
进行此
以下是工作示例:
$args = [
'post_type' => 'events',
'posts_per_page' => -1, // Unlimited posts
'orderby' => 'meta_value',
'meta_key' => 'event_date',
'order' => 'ASC',
'meta_query' => [
'relation' => 'AND',
[
'key' => 'event_date',
'value' => date('Y-m-d'), //<-- replace this with your correct date format
'compare' => '>',
'type' => 'DATE'
],
],
];
$queryEvent = new WP_Query($args);
if ($queryEvent->have_posts()) :
/* Start the Loop */
while ($queryEvent->have_posts()) :
$queryEvent->the_post();
//you post
endwhile;
endif;
希望这有帮助!
答案 1 :(得分:-2)
我认为您正在讨论循环遍历$ event_posts结果,同时排除那些日期比今天少的事件&#39;。这是实现你想要的东西的一种未经优化和不恰当的方式。您应该让MySQL检索日期大于NOW()的事件。如果event_date字段是DATETIME类型,则修改您的查询以仅获取其&#39; event_date&#39;大于NOW()。
"SELECT events WHERE event_date >NOW()"