2017-03-22 45 views
1

我希望根据我设置的自定义日期字段隐藏过去的活动。根据自定义日期字段隐藏过去的活动帖子

<?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

'event_date'字段的日期格式是什么? –

回答

-1

我想你是在讨论通过$ event_posts结果循环,同时排除那些日期“小于今天”的事件。这是一种非常优化和不恰当的方式来实现你想要的。你应该让MySQL检索日期大于NOW()的事件。如果event_date字段是DATETIME类型,则修改您的查询以仅获取“event_date”大于NOW()的事件。

"SELECT events WHERE event_date >NOW()" 
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; 

希望这有助于!

相关回复:https://stackoverflow.com/a/42325398/5019802

相关问题