Функции тегов-шаблонов используют глобальные переменные для доступа к обрабатываемой публикации и извлечения данных из нее или связанных с ней.
Основной переменной из них является то, $post
что содержит сам объект post. В вашем примере это не явно, но происходит то, что ваш цикл присваивает данные $post
, если имя для итерации не было, $post
вам нужно было бы сделать это явно ( global $post; $post = $some_other_post;
).
Однако существует множество других глобальных значений, и цель setup_postdata()
состоит в том, чтобы заполнить их данными. Если вы посмотрите на источник именно они:
global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages;
Обратите внимание, что в большинстве случаев вам следует звонить wp_reset_postdata()
позже, чтобы вернуть глобалы в их исходное состояние.