wp_reset_postdata() – восстанавливает значение глобальной переменной $post

Восстанавливает значение глобальной переменной $post на первоначально используемое на текущей странице, которое она берет из другой глобальной переменной – $wp_query.

Итак, значит функцию можно использовать после любых неосновных циклов вывода постов, которые никак не модифицируют переменную $wp_query, к таким циклам как раз можно отнести WP_Query.

Нужна для правильной работы the_title(), the_permalink(), the_content(), а также всех других функций, хоть как-то использующих $post или, в частности, $post->ID.

wp_reset_postdata()

Функция не принимает аргументов и ничего не возвращает.

Лежит в основе функции wp_reset_query().

Пример использования после цикла WP_Query

В этом примере выводим блок случайных постов:

$q = new WP_Query('posts_per_page=5&orderby=rand');
 
if($q->have_posts()):
	while($q->have_posts()) : $q->the_post();
		/* например анонс записи и ссылка */
	endwhile;
endif;
 
wp_reset_postdata();
Миша Рудрастых Разработчик WordPress WooCommerce

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

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.