【发布时间】:2020-07-21 16:23:28
【问题描述】:
我收到了一个显示自定义事件的 WordPress 文件。它已经过设置,以便根据分配给事件的日期是过去还是未来将事件分为 2 个类别。
我被要求做的是添加第三类“最近过去”(如果事件发生在从今天开始的过去 30 天内)。
我在这里查看了其他答案,例如 this one,这让我觉得我需要使用类似 'value' => date('Ymd', strtotime('today - 30 days')), 的东西,但如果这是正确的,我将如何阻止“最近过去”事件也出现在“过去”事件类别中?
如果有帮助,它还使用高级自定义字段作为查询的一部分,您可以在下面的代码中看到 if ( get_sub_field('show_events') == 'past' ) {
我知道如何在那里添加额外的查询,因此可以修改 if 块以进行额外的查询。这是我坚持的数组比较。
<?php
// Date is past
$meta_query_past = array(
array(
'key' => 'event_date',
'value' => date('Ymd'),
'type' => 'DATE',
'compare' => '<='
)
);
// Date is future
$meta_query_future = array(
array(
'key' => 'event_date',
'value' => date('Ymd'),
'type' => 'DATE',
'compare' => '>='
)
);
if ( get_sub_field('show_events') == 'past' ) {
$meta_query = $meta_query_past;
$attending = "We attended this event";
$show_events = 'past';
$sort_order = 'DESC';
} else {
$meta_query = $meta_query_future;
$attending = "We're attending this event";
$show_events = 'future';
$sort_order = 'ASC';
}
$args = array(
'post_type' => 'event',
'posts_per_page' => -1,
'order' => $sort_order,
'orderby' => 'meta_value_num',
'meta_key' => 'event_date',
'meta_query' => $meta_query
);
?>
【问题讨论】: