wp сбросить postdata() или wp сбросить запрос() после пользовательского цикла?


Чтение некоторых материалов о query_reset_postdata и query_reset_query приводит меня в замешательство. Например:

  1. Есть ли необходимость использовать как wp_reset_postdata, так и wp_reset_query вместе?

  2. Http://www.poststat.us/properly-reset-wordpress-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

Значит, кодекс ошибочен?

Author: Community, 2014-05-14

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(), а в том, что вам это никогда не понадобится!

 83
Author: Stephen Harris, 2017-04-13 12:37:38