【问题标题】:Don't display WordPress posts if time has passed using WP_Query如果使用 WP_Query 时间已过,请勿显示 WordPress 帖子
【发布时间】:2016-06-27 09:27:46
【问题描述】:

我有一个自定义发布类型的日程安排,我可以使用时间段的自定义字段添加“事件”。此自定义字段是使用 ACF Pro 的转发器。 它包含日期、开始时间和结束时间。日期选择器和时间选择器分别。

在主页上,我有一个图像滑块,它可以拉入艺术作品和活动标题,并且仅按时间顺序显示“今天”活动。 我现在要做的是不显示已经过去的事件。因此,例如,如果当前时间是下午 14:00,则在该时间之前结束的所有节目都不会显示。如果节目在下午 13:00 开始并在下午 15:00 结束,则该节目仍将显示,并将首先出现。我希望这是有道理的?!

到目前为止,这是我的 WP_Query,但经过几次尝试,我无法弄清楚如何修改它以按要求工作:

            <?php
                $args = array(
                  'post_type'      => 'schedule',
                  'posts_per_page' => '-1',
                  'meta_query'     => array(
                    'relation'     => 'AND',
                      'date_clause' => array(
                        'key'     => 'schedule_time_slot_%_schedule_show_date',
                        'compare' => '=',
                        'value'   => $day,
                      ),
                      'time_clause' => array(
                        'key'     => 'schedule_time_slot_%_schedule_show_start_time',
                        'compare' => 'EXISTS',
                      ),
                    ),
                    'orderby' => array(
                      'date_clause' => 'ASC',
                      'time_clause' => 'ASC',
                    )
                );

【问题讨论】:

    标签: php wordpress date time


    【解决方案1】:
            <?php
                $args = array(
                  'post_type'      => 'schedule',
                  'posts_per_page' => '-1',
                  'meta_query'     => array(
                    'relation'     => 'AND',
                      'date_clause' => array(
                        'key'     => 'schedule_time_slot_%_schedule_show_date',
                        'compare' => '=',
                        'value'   => $day,
                      ),
                      'time_clause' => array(
                         'key'     => 'schedule_time_slot_%_schedule_show_start_time',
                         'compare' => '>=',
                         'value'   => time(),
                      ),
                    ),
                    'orderby' => array(
                      'date_clause' => 'ASC',
                      'time_clause' => 'ASC',
                    )
                );
    

    注意 time_clause 参数的变化。所以只有当 time_clause 等于或晚于现在的时间时才显示它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-30
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多