为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕雪6442864 2023-08-19 10:50:56
我收到了一个显示自定义事件的 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);?>
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

将解决方案发布到我自己的问题,以防万一它可以帮助任何遇到类似问题的人。


<?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

);

?>


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信