wp_reset_postdata () o wp_reset_query () dopo un ciclo personalizzato?
1 risposta
- voti
-
- 2014-05-14
La differenzatrai due è che
-
wp_reset_query()
- assicurati che la queryprincipale sia stata reimpostata alla queryprincipale originale -
wp_reset_postdata()
- assicura cheil$post
globale sia stato ripristinatonelpost correntenella queryprincipale.
Ineffetti,guardando la fonte vedrai che
wp_reset_query()
chiamawp_reset_postdata()
. L'unica differenzatrai due è quindi questa riga:$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
(in
wp_reset_query()
). Quindiwp_reset_query()
ènecessario solo se questi due valoriglobali differiscono,e ciò accade solo sequery_posts()
è stato utilizzato da qualcheparte.Quando dovrei usarli?
Inpocheparole:
-
wp_reset_postdata()
-immediatamente dopo ogniWP_Query()
personalizzato
-
wp_reset_query()
-immediatamente dopo ogni ciclo utilizzandoquery_posts()
Dovrei usare wp_reset_query
Ebbene,sì,ma ènecessario solo dopo aver usato
query_posts()
. Cometi haifattonotare non devemai utilizzarequery_posts()
. Quindi,senon utilizzimaiquery_posts()
,non ènecessario chiamarewp_reset_query()
(invece diwp_reset_postdata()
.Inbreve,non è chenon dovresti usare
wp_reset_query()
invece diwp_reset_postdata()
,è chenon dovrestimai avernebisogno!The difference between the two is that
wp_reset_query()
- ensure that the main query has been reset to the original main querywp_reset_postdata()
- ensures that the global$post
has been restored to the current post in the main query.
Indeed, looking at the source you'll see that the
wp_reset_query()
callswp_reset_postdata()
. The only difference between the two then is this line:$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
(in
wp_reset_query()
). Sowp_reset_query()
is only necessary should those two globals differ, and that only happens ifquery_posts()
has been used somewhere.When should I use them?
Simply put:
wp_reset_postdata()
- immediately after every customWP_Query()
wp_reset_query()
- immediately after every loop usingquery_posts()
Should I use wp_reset_query
Well, yes, but it's only needed after using
query_posts()
. As you've pointed out you should never usequery_posts()
. So if you aren't ever usingquery_posts()
then it's not necessary to callwp_reset_query()
(instead ofwp_reset_postdata()
.In short, it's not that you shouldn't use
wp_reset_query()
instead ofwp_reset_postdata()
, it's that you shouldn't ever need to!-
Quindiin pratica stai dicendo: usa solo wp_reset_postdata ()e il codice ha un cattivoesempio?(Se vuoifarlo correttamente)So basically you're saying: Only use wp_reset_postdata() and the codex has a poor example? (If you want to do it correct)
- 1
- 2014-05-14
- bestprogrammerintheworld
-
Il codicepuò cambiare,quindieviterò difare affermazioni assolute al riguardo chepotrebbero diventareerrate.Ha unesempio di un ciclo `WP_Query ()` che utilizza `wp_reset_query ()`e inutilmente.Potrebbeinvece usare `wp_reset_postdata ()`,manon vienefatto alcun danno.Ha anche unesempio `query_posts ()` dove lofa,e ** deve **,usare `wp_reset_query ()`.Comenotatonel codice,sebbene questo sia un cattivoesempioe 'sconsigliato'nel senso che `query_posts ()`non dovrebbemaiessere usato.The codex may change, so I'm going to avoid making absolute statements about it which may become incorrect. It has an example a `WP_Query()` loop which uses `wp_reset_query()` and unnecessarily so. It could use `wp_reset_postdata()` instead, but no harm is done. It also has a `query_posts()` example where it does, and **must**, use `wp_reset_query()`. As noted in the codex, though this is a bad example and 'not recommended' in the sense that `query_posts()` should never be used.
- 1
- 2014-05-14
- Stephen Harris
Leggere alcune cose su
query_reset_postdata
equery_reset_query
mi crea confusione. Adesempio:Sopra afferma che dovresti usare solo
query_reset_postdata()
quando usi & quot; query separate & quot ;. Nell'esempio 2 c'è un commento:E
E davveronon dovrestimai usare
wp_reset_query
perchénon dovresti usare query_posts !?Nel WP Codex si afferma che dovresti usare
wp_reset_query()
dopo un ciclopersonalizzato (primoesempio) http://codex.wordpress.org/Function_Reference/wp_reset_queryIl codice è sbagliato allora?