Intereting Posts
Получение вложений пользователем Как перевести сообщение об ошибке WordPress Не удалось получить доступ к панели управления (только wp-admin). JOIN SQL для сортировки списка сообщений CPT по disply_name для user_id в postmeta Вернуться теги сообщения с описанием Удалите опцию «Custom ..» в образце цвета tinyMCE Как определить, совместим ли плагин с несколькими компонентами? Как отобразить все категории, в которых находится сообщение Возможно ли получить идентификатор сообщения из двух разных настраиваемых циклов типов сообщений, встроенных в одну и ту же почту, для выполнения update_post_meta из интерфейса? Имена файлов изображений Можно ли скрыть страницу, если нет сообщений от CPT? Применение эффекта лайтбокса nextgen-gallery WP Oembed, не проходящий через переменную «autoplay = 1» как создавать и показывать сеансы в прессе? Как перенести данные пользователя в многопользовательскую сеть и с конечным членом?

Сложный диапазон дат с 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 может стать рассмотрением и вызвать совокупность нескольких более простых запросов, а не сложную.