PHP WordPress - 检查日期是否在过去 30 天内

我收到了一个显示自定义事件的 WordPress 文件。它已设置为根据分配给事件的日期是过去还是将来将事件分为 2 个类别。

我被要求做的是添加第三个类别“最近过去”(如果该事件发生在从今天开始的过去 30 天内)。

我看过这里的其他答案,比如这个,这让我觉得我需要使用类似的东西'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

);


?>


慕雪6442864
浏览 112回答 1
1回答

慕姐8265434

将解决方案发布到我自己的问题,以防万一它可以帮助任何遇到类似问题的人。<?php&nbsp;// Date is past, but not within the last 30 days$meta_query_past = array(&nbsp; array(&nbsp; &nbsp; 'key' => 'event_date',&nbsp; &nbsp; 'value' => date('Ymd', strtotime('-30 days')),&nbsp; &nbsp; 'type' => 'DATE',&nbsp; &nbsp; 'compare' => '<'&nbsp; ));// Date is recent$meta_query_recent = array(&nbsp; 'relation' => 'AND',&nbsp; // Date is more than date 30 days ago&nbsp;&nbsp; array(&nbsp; &nbsp; 'key' => 'event_date',&nbsp; &nbsp; 'value' => date('Ymd', strtotime('-30 days')),&nbsp; &nbsp; 'type' => 'DATE',&nbsp; &nbsp; 'compare' => '>='&nbsp; ),&nbsp; // Date is less than todays date&nbsp; array(&nbsp; &nbsp; 'key' => 'event_date',&nbsp; &nbsp; 'value' => date('Ymd'),&nbsp; &nbsp; 'type' => 'DATE',&nbsp; &nbsp; 'compare' => '<'&nbsp; ));$meta_query_future = array(&nbsp; 'relation' => 'OR',&nbsp;&nbsp; // Date is future&nbsp; array(&nbsp; &nbsp; 'key' => 'event_date',&nbsp; &nbsp; 'value' => date('Ymd'),&nbsp; &nbsp; 'type' => 'DATE',&nbsp; &nbsp; 'compare' => '>='&nbsp; ),&nbsp; // Date is empty&nbsp; array(&nbsp; &nbsp; 'key' => 'event_date',&nbsp; &nbsp; 'value' => '',&nbsp; &nbsp; 'compare' => '='&nbsp; ));if ( get_sub_field('show_events') == 'past' ) {&nbsp; $meta_query = $meta_query_past;&nbsp; $attending = "We attended this event";&nbsp; $show_events = 'past';&nbsp; $sort_order = 'DESC';} elseif ( get_sub_field('show_events') == 'recent' ) {&nbsp; $meta_query = $meta_query_recent;&nbsp; $attending = "We recently attended this event";&nbsp; $show_events = 'recent';&nbsp; $sort_order = 'DESC';} else {&nbsp; $meta_query = $meta_query_future;&nbsp; $attending = "We're attending this event";&nbsp; $show_events = 'future';&nbsp; $sort_order = 'ASC';}$args = array(&nbsp; 'post_type' => 'event',&nbsp; 'posts_per_page' => -1,&nbsp; 'order' => $sort_order,&nbsp; 'orderby' => 'meta_value_num',&nbsp; 'meta_key' => 'event_date',&nbsp; 'meta_query' => $meta_query);?>
打开App,查看更多内容
随时随地看视频慕课网APP