根据自定义日期字段隐藏过去的事件帖子

时间:2017-03-22 13:32:45

标签: php wordpress date custom-post-type

我希望根据我设置的自定义日期字段隐藏过去的事件。

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

此代码目前按顺序显示我的事件,但我想隐藏比今天更早的事件?

2 个答案:

答案 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;

希望这有帮助!

相关答案:https://stackoverflow.com/a/42325398/5019802

答案 1 :(得分:-2)

我认为您正在讨论循环遍历$ event_posts结果,同时排除那些日期比今天少的事件&#39;。这是实现你想要的东西的一种未经优化和不恰当的方式。您应该让MySQL检索日期大于NOW()的事件。如果event_date字段是DATETIME类型,则修改您的查询以仅获取其&#39; event_date&#39;大于NOW()。

    "SELECT events WHERE event_date >NOW()"