the_post() – переходит к следующему посту цикла и определяет его глобальные переменные

Сложно объяснить всё то, что происходит внутри этой функции, поэтому попробую на примерах.

Прежде всего – у функции нет параметров, и работает она с глобальными переменными. Нужна только для основного цикла WordPress!

1. Увеличивает индекс значения текущего поста

Другими словами – переходит к следующему посту цикла.

Как я уже упомянул ранее, функция have_posts() будет возвращать true до тех пор, пока мы не дошли до последнего поста цикла. И как нам до него дойти, если не при помощи the_post() ?

while( have_posts() ) {
 
	the_post(); // переходит к следующему посту в цикле
 
	the_title();
 
}

Если в этом примере закомментировать 3-ю строчку, то мы получаем бесконечный цикл, в котором будут выводиться заголовки одного и того же поста (первого).

2. Обновляет значение глобальной переменной $post

Переопределяет некоторые глобальные переменные благодаря чему, у нас начинают нормально работать такие функции, как the_content(), get_the_content().

Распространённые ошибки

Что делать, если выводится заголовок, но не выводится контент внутри записи/страницы?

Предположим, внутри single.php вы используете такой код:

<h1><?php the_title() ?></h1>
<?php the_content() ?>

Заголовок поста выводится на ура, но вместо содержимого поста – пустота…

Этот пример как раз отлично описывает ситуацию с пропущенной the_post() в начале.

Потерялся первый пост в архивах рубрики / метки / поиске

Очень часто бывает, что файлы шаблонов конкретной записи single.php или страницы page.php начинаются с этой строчки:

get_header(); the_post();

И иногда вордпрессеры так увлекаются, что копируют всю эту строку при создании шаблонов главной страницы, рубрик, поиска и так далее.

В итоге получается, что функция the_post(); в начале файла уже перешла к первому посту цикла, а потом, когда мы ещё раз закидываем её в while( have_posts() ) : the_post();, то мы переходим к какому посту? Уж не второму ли?

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: