wp сбросить postdata() или wp сбросить запрос() после пользовательского цикла?
Чтение некоторых материалов о query_reset_postdata
и query_reset_query
приводит меня в замешательство. Например:
Выше указано, что вы должны использовать query_reset_postdata()
только при использовании "отдельных запросов".
В примере 2 есть комментарий:
WP_Query( $args ) = wp_reset_postdata();
И
query_posts ( $args ) = wp_reset_query();
И действительно вы никогда не должны использовать wp_reset_query
, потому что вы не должны использовать query_posts!?
В Кодексе WP указано, что вы должны использовать wp_reset_query()
после пользовательского цикла (первый пример) http://codex.wordpress.org/Function_Reference/wp_reset_query
Значит, кодекс ошибочен?
1 answers
Разница между ними заключается в том, что
-
wp_reset_query()
- убедитесь, что основной запрос был сброшен до исходного основного запроса -
wp_reset_postdata()
- гарантирует, что глобальный$post
был восстановлен до текущей записи в основном запросе.
Действительно, посмотрев на источник , вы увидите, что wp_reset_query()
вызывает wp_reset_postdata()
. Единственное различие между ними тогда заключается в следующей строке:
$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
(в wp_reset_query()
). Так что wp_reset_query()
необходимо только в том случае, если эти два глобальных отличаются, и это происходит только в том случае, если query_posts()
где-то использовался.
Когда я должен их использовать?
Проще говоря:
-
wp_reset_postdata()
- сразу после каждого обычаяWP_Query()
-
wp_reset_query()
- сразу после каждого цикла с использованиемquery_posts()
Должен ли я использовать wp_reset_query
Ну, да, но это необходимо только после использования query_posts()
. Как вы указали, вы никогда не должны использовать query_posts()
. Так что, если вы никогда не используете query_posts()
, то это не необходимо вызвать wp_reset_query()
(вместо wp_reset_postdata()
.
Короче говоря, дело не в том, что вы не должны использовать wp_reset_query()
вместо wp_reset_postdata()
, а в том, что вам это никогда не понадобится!