wp_reset_postdata () o wp_reset_query () después de un bucle personalizado?

37

Leer algunas cosas sobre query_reset_postdata y query_reset_query me confunde. Por ejemplo:

  
  1. ¿Es necesario utilizar wp_reset_postdata y wp_reset_query juntos?

  2.   
  3. enlace

  4.   

Lo anterior indica que solo debes usar query_reset_postdata() cuando usas "consultas separadas". En example2 hay un comentario:

WP_Query( $args ) = wp_reset_postdata();

Y

query_posts ( $args ) = wp_reset_query();

¿Y realmente nunca deberías usar wp_reset_query porque no deberías usar query_posts ??

En el Códice WP, indica que debe usar wp_reset_query() después de un bucle personalizado (primer ejemplo) enlace

¿Está mal el códice entonces?

    
pregunta bestprogrammerintheworld 14.05.2014 - 08:35

1 respuesta

56

La diferencia entre los dos es que

  • wp_reset_query() : asegúrese de que la consulta principal se haya restablecido a la consulta principal original
  • wp_reset_postdata() : garantiza que el $post global se haya restaurado a la publicación actual en la consulta principal.

De hecho, mirando la fuente verá que wp_reset_query() llama a wp_reset_postdata() . La única diferencia entre los dos es esta línea:

$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];

(en wp_reset_query() ). Por lo tanto, wp_reset_query() solo es necesario si esos dos globales difieren, y eso solo ocurre si se ha usado query_posts() en alguna parte.

¿Cuándo debo usarlos?

En pocas palabras:

  • wp_reset_postdata() - inmediatamente después de cada WP_Query() personalizado
  • wp_reset_query() - inmediatamente después de cada bucle usando query_posts()

¿Debo usar wp_reset_query

Bueno, sí, pero solo es necesario después de usar query_posts() . Como le ha indicado, nunca debe usar query_posts() . Por lo tanto, si nunca usa query_posts() , entonces no es necesario llamar a wp_reset_query() (en lugar de wp_reset_postdata() .

En resumen, no es que no debas usar wp_reset_query() en lugar de wp_reset_postdata() , ¡es que nunca deberías usarlo!

    
respondido por el Stephen Harris 14.05.2014 - 08:49

Lea otras preguntas en las etiquetas