Wp Query – Почему Я Не Могу Получить Старые Сообщения Вместо Недавних С Помощью Wp_Query?

  • Автор темы DimkoDimko
  • Обновлено
  • 22, Oct 2024
  • #1

Я делаю

 'posts_per_page' => 1 
with a 'ASC' параметр 'after' , and Я хочу ближайшее сообщение после этой даты, но я получаю самые дальние из них в будущем от даты. Есть ли какой-нибудь параметр для управления этим? что-то вроде WP_Query , or WP_Query always retrieve the most recent? This is my code:

WP_Query

У меня есть сайт мероприятий, и я хочу показать следующее, а не самое дальнее.

wp query – Почему я не могу получить старые сообщения вместо недавних с помощью WP_Query?

Не обращайте внимания на тот факт, что проверенная дата — сегодня, а сообщение, которое я ищу, — в будущем. Это не имеет значения (нет?).

Я искал Кодекс, но ничего не нашел. Должен ли я запросить ВСЕ сообщения и перейти к последнему в 'order' array?

Изменить: я не хочу упорядочивать результаты, я хочу ограничить их более старыми сообщениями, а не новейшими (по умолчанию). У меня есть несколько сообщений с будущей датой (событиями), и я хочу следующее событие. Если я сделаю запрос только с этим параметром 'order' => 'ASC' I get the latest post, and I want the oldest.

Спасибо!


Решение состоит в том, чтобы использовать параметр 'posts_per_page' => 1 . Спасибо @PieterGoosen и @webtoure. Теперь позвольте мне объяснить, почему мой вопрос не был на 100% правильным и почему он работает.

я не тестировал с $my_query->posts because I only have 1 wrong post (that was I thought), I had nothing to order, but $my_query = new WP_Query(array( 'post_type' => 'event', 'posts_per_page' => 1, 'date_query' => array( 'after' => date('Y-m-d h:i',time()) ) )); does not works that way. Как я сам объяснил на этот ответ, 'near_to' => 'past/future' first finds the posts that match the criteria, and then orders them, do the pagination, etc. So you can search for posts after дату (все), затем закажите по date_query , and get only 1 post with WP_Query .

#wp-запрос #запрос даты

DimkoDimko


Рег
14 Nov, 2014

Тем
68

Постов
190

Баллов
550
  • 25, Oct 2024
  • #2

Вы действительно используете

 
 order 
in your code? That will always ask for posts older newer that the exact current time when that query is run. Something like this:

$my_query = new WP_Query( array( 'post_type' => 'post', 'order' => 'ASC', 'posts_per_page' => 1, 'date_query' => array( array( 'after' => date( 'Y-m-d h:i', time() ), ) ), ) );

даст вам ссылку на 24 часа назад.

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

Что касается результатов, являющихся «бэквордами» (от самых новых к старым, а не наоборот), вы можете добавить order clause to your snippet (I haven't tested it):

'after' => date( 'Y-m-d h:i', time() - 60 * 60 * 24 )

Финальная редакция (проверено и работает). Вам нужно 'after' => date('Y-m-d h:i',time()) clause since WordPress queries posts 'DESC' by default. Test the code and see for yourself.

 

LeakalaFrausy25


Рег
25 Oct, 2024

Тем
70

Постов
193

Баллов
573
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно