Здравствуйте!

На днях писал статью о том как можно задать цикл WordPress, но в случаях когда задается несколько циклов на одной странице, каждый из заданных циклов нужно сбросить, если этого не сделать то вместо нужного контента Вы будете видеть посты, которые не те что указаны в параметрах цикла да и какая-то странность в разработанном шаблоне будет присутствовать. Так вот чтобы с вами этого не случилось достаточно в нужно месте произвести сброс цикла.

3 способа сбросить цикл WordPress

В общем есть три способа сбросить цикл:

  • wp_reset_query()
  • wp_reset_postdata()
  • rewind_posts()

Итак давайте рассмотрим, когда какой сброс нужно применять:

wp_reset_query()

Функция wp_reset_query() используется для сброса цикла, заданного с помощью функции query_posts(). Ее задача состоит в востановлении глобальной переменной $post в результате чего происходит сброс цикла. В шаблоне она используется так:

<?php wp_reset_query(); ?>

wp_reset_postdata()

Функция wp_reset_postdata() используется для сброса цикла заданного с помощью функций WP_Query() и get_posts(). Как и wp_reset_query() она восстанавливает глобальную переменную $post и происходит сброс цикла. В шаблоне используется так:

<?php wp_reset_postdata(); ?>

rewind_posts()

Функция rewind_posts(), грубо говоря, перематывает цикл так, что его можно повторно использовать на той же странице. Для примера можете просмотреть код файла archive.php темы TwentyTen.

В шаблоне используется так:

<?php rewind_posts(); ?>

А для вывода нескольких циклов так:

if (have_posts()) : while (have_posts()) : the_post(); ?>
	<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php endwhile; endif; ?>

<?php rewind_posts(); ?>

<?php while (have_posts()) : the_post(); ?>
	<?php the_content(); ?>
<?php endwhile; ?>

В отличии от фукнций wp_reset_query() и wp_reset_postdata(), которые сбрасывают весь объект запроса, функция rewind_posts() сбрасывает всего лишь счетчик постов.

Заключение

Сегодня мы узнали еще пару полезных моментов для создание темы WordPress, а в частности научились сбрасывать измененные и дополнительные циклы WordPress. Спасибо за внимание!

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


Комментарии
  1. Александр

    Спасибо, очень помогло