A diferença entre os dois é que
wp_reset_query()
- verifique se a consulta principal foi redefinida para a consulta principal original
wp_reset_postdata()
- garante que o global $post
tenha sido restaurado para a postagem atual na consulta principal.
Na verdade, olhando para a fonte, você verá que as wp_reset_query()
chamadas wp_reset_postdata()
. A única diferença entre os dois então é esta linha:
$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
(dentro wp_reset_query()
). Então, isso wp_reset_query()
é necessário apenas se essas duas globais diferirem, e isso só acontece se query_posts()
tiver sido usado em algum lugar.
Quando devo usá-los?
Simplificando:
wp_reset_postdata()
- imediatamente após cada costume WP_Query()
wp_reset_query()
- imediatamente após cada loop usando query_posts()
Devo usar wp_reset_query
Bem, sim, mas só é necessário após o uso query_posts()
. Como você apontou , nunca deve usarquery_posts()
. Portanto, se você nunca estiver usando query_posts()
, não será necessário ligar wp_reset_query()
(em vez de wp_reset_postdata()
.
Em suma, não é que você não deva usar em wp_reset_query()
vez de wp_reset_postdata()
, é que você nunca deveria precisar!