Описание
Возвращает глобальную переменную $post в соответствие с текущим постом (в актуальное состояние).
Функцию нужно использовать каждый раз после произвольного Цикла, в случаях, когда на странице применяется произвольный Цикл WordPress с использованием глобальной переменной $post (см. пример).
Если после цикла используется функция wp_reset_query() для "сброса" данных, то wp_reset_postdata() использовать не нужно!
Говоря простым языком wp_reset_postdata() нужна, чтобы после вывода не ловить глюки: захочешь получить ID поста текущей страницы ($post->ID), а получишь ID другого поста. Тоже самое с заголовком, датой, контентом и т.д.
С версии 3.0. функция использует глобальную переменную $wp_query.
Функция ничего не возвращает
Использование
<?php wp_reset_postdata(); ?>
Примеры
1. Пример сброса данных поста и страницы. Этот пример полностью аналогичен работе функции wp_reset_query().
<?php
$original_query = $wp_query;
$wp_query = null;
$wp_query = new WP_Query($args);
if(have_posts()){
while(have_posts()){ the_post();
the_title(); the_excerpt();
}
} else
echo 'Записей не найдено';
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();
?>
2. Еще одни пример, показывающий в каких случаях нужно использовать wp_reset_postdata():
<?php $custom_query = new WP_Query('cat=-9');
while($custom_query->have_posts()) : $custom_query->the_post(); ?>
<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
</div>
<?php endwhile; ?>
<?php wp_reset_postdata(); // reset the query ?>
3. В качестве альтернативы wp_reset_postdata() (в версиях ВП ниже 3.0), можно сначала записать $post во временную переменную ($tmp_post), а после цикла вернуть прежнее значение переменной $post ($post = $tmp_post):
<?php
global $post;
$tmp_post = $post; // записываем данные
$myposts = get_posts('numberposts=5&offset=1&category=1');
foreach($myposts as $post) :
setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<?php $post = $tmp_post; // возвращаем данные ?>
wp_reset_postdata()
из файла: /wp-includes/query.php WP 3.3.2function wp_reset_postdata() {
global $wp_query;
if ( !empty($wp_query->post) ) {
$GLOBALS['post'] = $wp_query->post;
setup_postdata($wp_query->post);
}
}Связанные Функции
Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.
Ничто не вечно и особенно этот факт касается электронной техники - она выходит из строя чаще всего, в частности к такой технике относятся сотовые телефоны/смартфоны. Но не надо сразу впадать в панику, если вдруг ваш любимый телефон перестал включаться! И даже смартфоны htc ремонт поддерживают очень даже хорошо - любой телефон можно починить и зачастую это рациональное решение: выгоднее и лучше покупки нового телефона.