Intereting Posts
Удалить сообщение, если проверено Расширенное настраиваемое поле, чтобы исправить пейджинг Плагин Grid для шаблона универсальной категории Показать полный шаблон дочерних страниц, включая контент Почему я должен использовать pre_get_posts с пользовательским WP_Query для сброса posts_per_page? Как добавить палитру в заголовок WordPress? предотвратить тему переднего конца от впрыскивания css в wp-admin Есть ли способ переименовать имя роли пользователя без плагина? WP REST API – получить пользовательские таксономии на основе терминов и фильтров Переместить wordpress в папку без изменения URL-адресов выдержка – не используйте основное содержимое, если пустое Преобразованный HTML5 в WP, Как применить преобразованные классы к новым страницам (после завершения преобразования) Как направить пользователя на фактическую страницу 404, когда проверка является ложной в single.php? Страницы перенаправляют меня на главную страницу Как реализовать два отдельных цветных изображения для каждого сообщения / страницы Как превратить это правило .htaccess в динамическое правило с помощью add_rewrite_rule, et al?

Расширенный заказ query_posts

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

Каждое our_date поле имеет поле под названием our_date , которое представляет собой дату и время и title . Клиент хочет, чтобы сообщения упорядочивались по title , но чтобы будущие должности отображались сначала в списке и все прошлые даты внизу.

Это то, с чем я сейчас работаю:

 'orderby' => array('date' => 'ASC'), 

Каков наилучший способ выполнить эту выборочную сортировку результатов из query_posts ?

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

Трудно посоветовать, не видя конкретных обстоятельств (таких как подсчеты, разбивка на страницы и т. Д.), Но моя первая мысль заключалась в том, чтобы разделить это на два запроса:

  1. «Будущие» сообщения (мета-запрос для поля даты в будущем, порядок по названию)
  2. «Предыдущие» сообщения (мета-запрос для поля даты в прошлом, упорядочить по названию)

Из окна, запросы wordpress не имеют возможности сортировать по двум ключам. Я далек от того, чтобы быть человеком mysql, но я уверен, что вы можете написать такой запрос, а это значит, что вы можете использовать соответствующие фильтры, связанные с запросом, для настройки SQL-запроса, сгенерированного wordpress, как желаемого.

Но я бы, вероятно, просто переключил использование query_posts на правильное использование wp_query и сортировал полученные сообщения в PHP. Снижение производительности должно быть незначительным (практически нулевой, если используется кеширование страницы), а код немного более прямолинейный.