【问题标题】:PHP WordPress - check if a date falls within the last 30 daysPHP WordPress - 检查日期是否在过去 30 天内
【发布时间】: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
);

?>

【问题讨论】:

    标签: php wordpress date


    【解决方案1】:

    发布我自己问题的解决方案,以防万一它对遇到类似问题的人有所帮助。

    <?php 
    // Date is past, but not within the last 30 days
    $meta_query_past = array(
      array(
        'key' => 'event_date',
        'value' => date('Ymd', strtotime('-30 days')),
        'type' => 'DATE',
        'compare' => '<'
      )
    );
    // Date is recent
    $meta_query_recent = array(
      'relation' => 'AND',
      // Date is more than date 30 days ago 
      array(
        'key' => 'event_date',
        'value' => date('Ymd', strtotime('-30 days')),
        'type' => 'DATE',
        'compare' => '>='
      ),
      // Date is less than todays date
      array(
        'key' => 'event_date',
        'value' => date('Ymd'),
        'type' => 'DATE',
        'compare' => '<'
      )
    );
    $meta_query_future = array(
      'relation' => 'OR', 
      // Date is future
      array(
        'key' => 'event_date',
        'value' => date('Ymd'),
        'type' => 'DATE',
        'compare' => '>='
      ),
      // Date is empty
      array(
        'key' => 'event_date',
        'value' => '',
        'compare' => '='
      )
    );
    
    if ( get_sub_field('show_events') == 'past' ) {
      $meta_query = $meta_query_past;
      $attending = "We attended this event";
      $show_events = 'past';
      $sort_order = 'DESC';
    } elseif ( get_sub_field('show_events') == 'recent' ) {
      $meta_query = $meta_query_recent;
      $attending = "We recently attended this event";
      $show_events = 'recent';
      $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
    );
    ?>
    
    

    【讨论】:

      猜你喜欢
      • 2011-12-26
      • 1970-01-01
      • 2015-05-18
      • 2011-10-31
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多