커스텀 루프 후 wp_reset_postdata () 또는 wp_reset_query ()?


42

에 대한 몇 가지 물건을 읽기 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()"별도의 쿼리"를 사용할 때만 사용해야한다는 내용입니다 . example2에는 주석이 있습니다.

WP_Query( $args ) = wp_reset_postdata();

query_posts ( $args ) = wp_reset_query();

wp_reset_queryquery_posts를 사용해서는 안되기 때문에 실제로 사용해서는 안됩니다 !?

WP Codex에서는 wp_reset_query()커스텀 루프 (첫 번째 예) 후에 사용해야한다고 명시합니다 ( http://codex.wordpress.org/Function_Reference/wp_reset_query

그렇다면 코덱이 잘못 되었습니까?

답변:


64

둘의 차이점은

  • 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()해서는 안되는 것이 아닙니다. 필요하지 않아도됩니다!


1
기본적으로 wp_reset_postdata () 만 사용하고 코덱에 나쁜 예가 있습니까? (
정확히

1
코덱이 변경 될 수 있으므로 잘못된 내용에 대한 절대적인 진술은 피할 것입니다. 예를 들어 WP_Query()루프를 사용 wp_reset_query()하고 불필요하게 루프합니다 . wp_reset_postdata()대신 사용할 수 는 있지만 아무런 해가 없습니다. 또한 사용 query_posts()하고 사용해야 하는 예제가 있습니다 wp_reset_query(). 코덱에서 언급했듯이 이것은 나쁜 예이며 query_posts()절대 사용해서는 안되는 의미에서 '권장되지 않습니다' .
Stephen Harris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.