Получение первого поста из wp_query

3 апр. 2014 г., 22:44:00
Просмотры: 42.3K
Голосов: 8

Как я могу получить первый пост из результатов WP_Query?

$connected = new WP_Query( array(
// Аргументы
));

// Это не работает..
echo $connected[0]->post_name;
6
Комментарии

Вы должны использовать цикл. Прочитайте запись в кодексе о WP_Query..там есть пример цикла. Также на той же странице вы можете найти параметр posts_per_page и ограничить запрос, чтобы получить только 1 запись.

helgatheviking helgatheviking
3 апр. 2014 г. 22:54:45

@helgatheviking Да, я знаю, что это возможно таким способом, но разве нельзя обойтись без цикла?

Robbert Robbert
3 апр. 2014 г. 22:56:19

Вы можете использовать get_post() Кодекс или Цикл, как предлагает предыдущий комментатор, и если вам все еще нужна первая запись, вы всегда можете перемотать запрос - $connected->rewind_posts()

Howdy_McGee Howdy_McGee
3 апр. 2014 г. 23:05:02

Попробуйте использовать $connected->posts[0]->post_name - $connected является объектом WP_Query, который содержит член массива posts.

User User
3 апр. 2014 г. 23:08:02

Всё возможно, но зачем изобретать велосипед? Используйте var_dump($connected), чтобы понять, почему ваше предложение не работает. $connected на самом деле является объектом, где результирующие записи хранятся в свойстве $connected->posts.

helgatheviking helgatheviking
3 апр. 2014 г. 23:10:09

Спасибо всем за помощь. $connected->posts[0]->post_name сработало!

Robbert Robbert
4 апр. 2014 г. 09:51:05
Показать остальные 1 комментариев
Все ответы на вопрос 2
0
20

Если вы исследуете WP_Query, то набор запрошенных записей сохраняется в свойство posts, а текущая запись присваивается свойству post (каждый раз при итерации цикла).

Таким образом, вы можете использовать $connected->posts[0], если вам нужно просто получить первую запись, но может быть удобнее сделать $connected->the_post();, а затем $connected->post, если вам нужно пропустить первую и обработать остальные в обычном цикле.

3 апр. 2014 г. 23:30:20
0

Вы можете использовать такой код:

if ($the_query->have_posts()) {
  $first_post = $the_query->posts[0];
  echo "Заголовок 1-й записи\t:"$first_post->post_title;
}
25 февр. 2021 г. 10:29:59