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()
- asegura que el global $post
se haya restaurado a la publicación actual en la consulta principal.
De hecho, mirando la fuente verás que las wp_reset_query()
llamadas 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 wp_reset_query()
lo tanto, solo es necesario si esas dos variables globales son diferentes, y eso solo sucede si query_posts()
se ha utilizado en alguna parte.
¿Cuándo debo usarlos?
Simplemente pon:
wp_reset_postdata()
- inmediatamente después de cada costumbre WP_Query()
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 has señalado , nunca debes usarloquery_posts()
. Entonces, si nunca está usando, query_posts()
entonces no es necesario llamar wp_reset_query()
(en lugar de wp_reset_postdata()
.
En resumen, no es que no debas usar en wp_reset_query()
lugar de wp_reset_postdata()
, ¡es que nunca deberías necesitar!
WP_Query()
bucle que usawp_reset_query()
e innecesariamente. Podría usarwp_reset_postdata()
en su lugar, pero no se hace daño. También tiene unquery_posts()
ejemplo donde lo hace y debe usarwp_reset_query()
. Como se señaló en el códice, aunque este es un mal ejemplo y 'no recomendado' en el sentido de quequery_posts()
nunca debe usarse.