我有一个自定义帖子类型的日程表,我可以使用自定义字段Timeslot添加“事件”。此自定义字段是使用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',
)
);
答案 0 :(得分: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。