WordPress: дополнительный цикл без разрушения основного

Очень часто бывает необходимость в создании дополнительного цикла на странице, где уже есть основной поток постов. Например, когда нужно вывести отдельный блок со специально отобранными постами, на английском языке такие называют featured posts.

Если просто сделать копию основного цикла, добавив нужные параметры через query_posts, то может так получиться, что в результате «поломаются» оба цикла. Чтобы этого избежать, необходимо у второго цикла (не основного) использовать 2 дополнительные строки кода:

<?php $temp_query = $wp_query; ?>
	<?php query_posts('showposts=3&cat=7') ?>
	<?php if (have_posts()) : ?>
		<?php while (have_posts()) : the_post(); ?>
			 ...
		<?php endwhile; ?>
	<?php endif; ?>
<?php $wp_query = $temp_query; ?>

Ключевыми в данном коде являются первая и последняя строки, которые и спасают циклы от разрушения.

Ваш комментарий будет первым