wp_reset_postdata () oder wp_reset_query () nach einer benutzerdefinierten Schleife?
1 Antworten
- Stimmen
-
- 2014-05-14
Der Unterschied zwischen denbeidenist der
-
wp_reset_query ()
- Stellen Sie sicher,dass die Hauptabfrage auf die ursprüngliche Hauptabfrage zurückgesetzt wurde -
wp_reset_postdata ()
- stellt sicher,dass derglobale$post
im aktuellen Beitragin der Hauptabfrage wiederhergestellt wurde.
Wenn Sie sich die Quelle ansehen,werden Siefeststellen,dass der
wp_reset_query ()
ruftwp_reset_postdata ()
auf. Dereinzige Unterschied zwischen denbeidenist dann diese Zeile:$ GLOBALS ['wp_query']=$ GLOBALS ['wp_the_query'];
(in
wp_reset_query ()
).wp_reset_query ()
ist alsonurerforderlich,wenn sich diesebeidenglobalen Werte unterscheiden. Diesgeschiehtnur,wennquery_posts ()
irgendwo verwendet wurde.Wann sollteich sie verwenden?
Einfach ausgedrückt:
-
wp_reset_postdata ()
- unmittelbarnachjedembenutzerdefiniertenWP_Query()
-
wp_reset_query ()
- unmittelbarnachjeder Schleifemitquery_posts()
Sollich wp_reset_query
verwenden?Nunja,aberes wirdnurbenötigt,nachdem
query_posts ()
verwendet wurde. Wie Siebereitserwähnt haben,haben Sie sollteniemalsquery_posts ()
verwenden. Wenn Sie alsoniequery_posts ()
verwenden,istes nichterforderlich ,wp_reset_query ()
aufzurufen (anstelle vonwp_reset_postdata ()
.Kurzgesagt,esistnicht so,dass Sie
wp_reset_query ()
anstelle vonwp_reset_postdata ()
verwenden sollten,sondern dass Sie diesniemalsbrauchen sollten!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!-
Sie sagen alsoim Grunde: Verwenden Sienur wp_reset_postdata () und der Codex hatein schlechtes Beispiel?(Wenn dues richtigmachen willst)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
-
Der Kodex kann sich ändern,daher werdeiches vermeiden,absolute Aussagen darüber zumachen,diemöglicherweisefalsch werden.Esgibt ein Beispielfüreine WP_Query () -Schleife,die unnötigerweise wp_reset_query () verwendet.Es könnte stattdessen "wp_reset_postdata ()" verwenden,aberes wird kein Schaden angerichtet.Esgibt auchein Beispielfür "query_posts ()",in dem "wp_reset_query ()" verwendet wird und **muss **.Wieim Codexerwähnt,ist diesjedochein schlechtes Beispiel und "nichtempfohlen"in dem Sinne,dass "query_posts ()"niemals verwendet werden sollte.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
Das Leseneiniger Dinge über
query_reset_postdata code> und
query_reset_query
verwirrtmich. Zum Beispiel:Oben wird angegeben,dass Sie
query_reset_postdata ()
nur verwenden sollten,wenn Sie "separate Abfragen" verwenden. In Beispiel 2gibt eseinen Kommentar:UND
Und wirklich,Sie solltenniemals
wp_reset_query
verwenden,weil Sie query_postsnicht verwenden sollten!?Im WP-Codex heißtes,dass Sie
wp_reset_query ()
nacheinerbenutzerdefinierten Schleife verwenden sollten (erstes Beispiel) http://codex.wordpress.org/Function_Reference/wp_reset_queryIst der Kodex dannfalsch?