Показать сообщения с датой начала или окончания позже текущей даты

Я работаю с списком предстоящих событий. Я создаю персонализированный тип сообщения с настраиваемым полем: [event_start_date]. У меня также есть несколько событий расширения, определенных дополнительным настраиваемым полем: [event_end_date]. Затем у меня есть два вида событий (примеры):

  • День рождения | дата начала: 13/08/2012, end_date: 'empty'
  • Праздники | дата начала: 5/08/2012, end_date: 30/08/2012

Я хотел бы отображать события с «стартом» или «датой окончания» позже текущего времени, но я потерпел неудачу.

Я считаю, что формат даты верен, потому что я начал использовать другой запрос, который отлично работает только с использованием [даты начала]. Моя проблема заключается в условии «OR» end_date. Я пробовал с meta_query с отношением «OR», но не работает:

$args = array( 'post_type' => 'eventos2', 'posts_per_page' => 4, 'meta_key' => 'event_start_date', 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_query' => array( 'relation' => 'OR', array('key' => 'event_start_date', 'value' => date('Y/m/d', strtotime('-1 day')), 'compare' => '>=') array('key' => 'event_end_date', 'value' => date('Y/m/d', strtotime('-1 day')), 'compare' => '>=') ) ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); $end = DateTime::createFromFormat('Y/m/d', get_field('event_end_date')); $start = DateTime::createFromFormat('Y/m/d', get_field('event_start_date')); if ($end !='') { /*print events with start and end_date*/ echo "<li>"; echo the_title(), "</br>"; echo $start-> format('Y/m/d'),"&nbsp". to . "&nbsp". $end-> format('Y/m/d'); echo "</li>"; } else { /*print events with only start_date*/ echo "<li>"; echo the_title(), "</br>"; echo $start-> format('Y/m/d'); echo "</li>"; } endwhile; ?> 

Он показывает этот результат:

  • СОБЫТИЕ 2 | 2012/08/08 по 2012/08/15
  • СОБЫТИЕ 4 | 2012/08/31 – 2012/09/06
  • СОБЫТИЕ 3 | 2012/08/17
  • СОБЫТИЕ 1 | 2012/08/01

Как вы можете видеть, EVENT 1 указан, несмотря на прошлое событие. Более того, события в беспорядке.

Я буду признателен за любую ориентацию проблемы.

Solutions Collecting From Web of "Показать сообщения с датой начала или окончания позже текущей даты"

Редактировать:

Я считаю, что мои комментарии ниже по-прежнему актуальны, но я подозреваю, что часть проблемы – это

 'relation' => 'OR', 

Это должно быть «AND» (это значение по умолчанию, поэтому его можно удалить), чтобы гарантировать, что он возвращает только сообщения, которые удовлетворяют обоим условиям. В настоящее время он вернет события, которые начинаются или заканчиваются после вчерашнего дня. По сути, это возвращает все события, которые заканчиваются вчера или после.

Конечно, это может быть только частью проблемы …


Я не вижу ничего плохого в самом запросе, но строковое представление дат ваших событий вызовет проблемы с запросами (без примеров трудно сказать, является ли это проблемой). Если вы собираетесь сортировать строковое представление дат, а не временную метку, формат m/d/Y не будет сортироваться должным образом:

01/01/2012 происходит после, но появляется перед

11/01/1012

например! Формат Y/m/d будет работать.