Что делает функция setup_postdata ? И как ее использовать ?

функция setup_postdata

Ко мне обратился читатель с просьбой по подробней описать что значит запись в моих постах <?php foreach( $tpost as $post ) : setup_postdata($post); ?>, которую я так часто использую. Конкретно ему было не понятна работа функции setup_postdata.

Функция setup_postdata() - заполняет глобальные переменные wordpress, на основе которых формируется вывод постов или страниц: $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages.

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

Благодаря функция setup_postdata() мы можем напрямую писать в цикле вызов таких функций: the_title(), the_permalink(), the_content() и другие.

Также, обязательным условием работы функции есть передача объекта с именем $post - setup_postdata($post); , если передать этот же объект но с другим именем, например $post2 и вызвать setup_postdata($post2); то функция будет работать не правильно. Учтите это, когда захотите написать какой то уникальный код :-).

Как создать правильный объект типа $post для этого у Вордпрес есть несколько функций, основные из них: get_posts, get_post, $wpdb->get_results, $query->query и другие. Учтите что часть из этих функций выдают массив объектов, а поэтому надо их запускать в цикле foreach( $наш_масив as $post ) чтобы вызов setup_postdata($post) не приводил к ошибке сервера.

 

Для примера, можно посмотреть код, который я приводил в статье как создать новый цикл WordPress:

<?php
global $post;
$tmp_post = $post;
global $more;
$tmp_more = $more;
$Spost=get_posts('cat=6&showposts=3');
if($Spost):
?>
<?php foreach( $Spost as $post ) : setup_postdata($post); ?>
<a class="urlSn" href="<?php the_permalink();?>"><?php the_title();?></a>
<?php the_content(''); ?>
<?php endforeach;?>
<?php endif; $post=$tmp_post; $more=$tmp_more;?>

 

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

Комментарии к записи «Что делает функция setup_postdata ? И как ее использовать ?»:
  1. Alex:

    Функция setup_postdata изменяет основные глобальные переменные. Получается что на ее вызове можно реализовать свой механизм работы категории в странице? правильно понимаю?

  2. Ира:

    Теперь понятно почему переменная $post не меняет своих значений после вызова setup_postdata :-).
    Она их на вход должна получить, а не вернуть на выходе.
    Как то запутано все с этой функцией.

Сделать заказ
Онлайн помощь по WordPress