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!