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 $postse 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.