【问题标题】:Hide past events posts based on custom date field根据自定义日期字段隐藏过去的事件帖子
【发布时间】:2017-08-14 15:44:58
【问题描述】:

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

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

此代码当前按顺序显示我的事件,但我想隐藏早于今天日期的事件?

【问题讨论】:

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

标签: php wordpress date custom-post-type


【解决方案1】:

我认为您是在讨论循环访问 $event_posts 结果,同时排除那些日期“小于今天”的事件。这是实现您想要的目标的一种未经优化且不合适的方式。您应该让 MySQL 检索日期大于 NOW() 的事件。如果 event_date 字段是 DATETIME 类型,则修改您的查询以仅获取“event_date”大于 NOW() 的事件。

    "SELECT events WHERE event_date >NOW()"

【讨论】:

    【解决方案2】:

    如果您想通过自定义帖子字段过滤数据,您必须为此使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 2013-02-09
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多