Intereting Posts
Сообщения Страница Избранное Изображение Какие книги WordPress следует рекомендовать начинающему веб-дизайнеру? Каков правильный способ обновления плагина через черепаху svn в репозиторий? Страницы архива или таксономии, не работающие для пользовательских типов сообщений Тема одной страницы Как я могу найти «общедоступный» путь к файлу? Получать сообщения по таксономии без условий Как исправить мою RSS-ленту, которая была испорчена после того, как я изменил тему WordPress? Невозможно настроить темы в WordPress после перехода на https с http Может ли виджет боковой панели извлекать информацию из области содержимого? Я не могу загрузить новую тему WordPress из заархивированного файла Пользовательский запрос поля – значение мета является массивом Зачем выполнять the_post ()? Как автоматически удалить ссылки по умолчанию в WordPress Изменить get_permalink с помощью определенного фильтра

Сложный диапазон дат с WP_Query и МЕЖДУ

Предыстория

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

  • start_date
  • end_date

На интерфейсе у нас есть боковая панель с фильтрами, где пользователь может выбирать, как они хотят искать события (т. Е. Различные таксономии, дату начала поездки в город, дату окончания и т. Д.). event_begin event_end event_begin и event_end – это то, что мы будем использовать для запроса базы данных.

Проблема

У меня возникли проблемы, в том числе плохо спрогнозированный результат. Появляются строгие матчи, но участники проекта говорят, что поиск слишком строгий. Я разработал концепцию отказа от поля front-end event_end в фильтрах поиска пользователя, но я не совсем уверен, что это необходимо в этот момент.

Если я ищу события, я могу meta_query структуру meta_query где:

  • события с датой начала и датой окончания между двумя выбранными датами будут отображаться
  • события, когда начинается дата начала между двумя выбранными датами
  • события, в которых будет отображаться дата окончания между двумя выбранными датами

Но как насчет того, когда я начинаю поиск следующим образом:

  • event_begin 7/15/2016
  • event_end 7/15/2016

… но есть событие в базе данных, где его пользовательские поля показывают, что событие действительно длится неделю. 7/11/2016 – 7/16/2016.

Это событие не вернется из моего запроса, потому что ни одно из приведенных выше совпадений не будет. Но технически, если я нахожусь в городе на 7/15/2016 (сегодня), я должен уметь видеть (и, возможно, посещать) это событие в то время как в городе по делам в течение дня.

мысли

Как правило, мы не сохраняем диапазон событий как отдельные даты для каждого дня в серии. Мы (как люди) сохраняем диапазоны дат; поэтому я уверен, что есть какой-то логичный способ приблизиться к этому. Просто не придумывайте ничего в моих поисках или исследованиях.

Спасибо вам за помощь и мысли!

Solutions Collecting From Web of "Сложный диапазон дат с WP_Query и МЕЖДУ"

В коде meta_query немного сложно думать о сложном случае, таком как этот, и без доступа к данным. 🙂

То, что у вас есть, может быть выражено в двух следующих условиях:

  • event_begin BETWEEN event_begin и event_end
  • event_begin BETWEEN event_begin и event_end

Ваш первый случай с обоими между ними кажется неактуальным, так как эти два его поймают.

Задача, с которой вы сталкиваетесь, заключается в том, что вам нужна обратная логика – event_begin или event_end BETWEEN event_begin и event_end . Но вы не можете выразить это так же, поскольку они уникальны для каждого события.

Но вам все равно, когда они есть, просто, что они ищут даты поиска.

Таким образом, еще два условия могут быть выражены как:

  • ( start_date <= event_begin ) AND ( end_date > = event_begin ) (даты события в начале или вокруг начала поиска)
  • ( start_date <= event_end ) AND ( end_date > = event_end ) (даты события на или около конца поиска)

Опять же, я изо всех сил пытаюсь написать это как мета-запрос «в теории», но поскольку мета-запросы могут быть вложенными, вы должны уметь все это вносить в свою логику.

Производительность PS может стать рассмотрением и вызвать совокупность нескольких более простых запросов, а не сложную.