wp_reset_postdata () ou wp_reset_query () depois de um loop personalizado?

37

Ler algumas coisas sobre query_reset_postdata e query_reset_query me deixa confuso. Por exemplo:

  
  1. Existe alguma necessidade de usar wp_reset_postdata e wp_reset_query juntos?

  2.   
  3. enlace

  4.   

Acima declara que você deve usar apenas query_reset_postdata() ao usar "consultas separadas". No exemplo2, há um comentário:

WP_Query( $args ) = wp_reset_postdata();

AND

query_posts ( $args ) = wp_reset_query();

E você nunca deveria usar wp_reset_query porque você não deveria usar query_posts!

No WP Codex, você deve usar wp_reset_query() após um loop personalizado (primeiro exemplo) enlace

O códice está errado então?

    
por bestprogrammerintheworld 14.05.2014 / 08:35
fonte

1 resposta

56

A diferença entre os dois é que

  • wp_reset_query() - garante que a consulta principal tenha sido redefinida para a consulta principal original
  • wp_reset_postdata() - garante que o $post global tenha sido restaurado para a postagem atual na consulta principal.

De fato, olhando para a fonte , você verá que o wp_reset_query() chama wp_reset_postdata() . A única diferença entre os dois é a seguinte:

$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];

(em wp_reset_query() ). Portanto, wp_reset_query() é necessário apenas se esses dois globals forem diferentes, e isso só acontece se query_posts() tiver sido usado em algum lugar.

Quando devo usá-los?

Coloque simplesmente:

  • wp_reset_postdata() - imediatamente após cada custom WP_Query()
  • wp_reset_query() - imediatamente após cada loop usando query_posts()

Devo usar o wp_reset_query

Bem, sim, mas só é necessário depois de usar query_posts() . Como você apontou, você nunca deve usar query_posts() . Então, se você não estiver usando query_posts() , então não é necessário chamar wp_reset_query() (em vez de wp_reset_postdata() .

Em resumo, não é que você não deva usar wp_reset_query() em vez de wp_reset_postdata() , é que você nunca precisará fazer isso!

    
por Stephen Harris 14.05.2014 / 08:49
fonte