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 $posttenha 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!