Wann sollten Sie WP_Query vs query_posts () vs get_posts () verwenden?
-
-
Überprüfen Sie auch diese [längere Analyse] (http://wordpress.stackexchange.com/questions/226960/why-query-posts-isnt-marked-as-deprecated/248955#248955)Check also this [longer analysis](http://wordpress.stackexchange.com/questions/226960/why-query-posts-isnt-marked-as-deprecated/248955#248955)
- 1
- 2016-12-25
- prosti
-
7 Antworten
- Stimmen
-
- 2010-09-13
-
query_posts()
ist zu simpel und a Problematische Möglichkeit,die Hauptabfrageeiner Seite zu ändern,indem sie durcheine neue Instanz der Abfrageersetzt wird. Esistineffizient (führt SQL-Abfragenerneut aus) und schlägt unterbestimmten Umständen sofortfehl (insbesondere häufigbei der Paginierung von Posts). Jedermoderne WP-Code sollte zuverlässigere Methoden verwenden,z. B. die Verwendung vonpre_get_posts
haken zu diesem Zweck. TL; DR verwendetniemals query_posts () . -
get_posts()
istin der Verwendung sehr ähnlich und akzeptiert dieselben Argumente (miteinigen Nuancen,wie z. B. unterschiedlichen Standardeinstellungen),gibt jedochein Array von Posts zurück,ändert keineglobalen Variablen und kann überall sicher verwendet werden. -
WP_Query
ist die Klasse,diebeide unterstützt die Szenen,aber Sie können auch Ihreeigene Instanz davonerstellen und damit arbeiten. Etwas komplexer,weniger Einschränkungen,auch überall sicher zu verwenden.
query_posts()
is overly simplistic and a problematic way to modify the main query of a page by replacing it with new instance of the query. It is inefficient (re-runs SQL queries) and will outright fail in some circumstances (especially often when dealing with posts pagination). Any modern WP code should use more reliable methods, like making use of thepre_get_posts
hook, for this purpose. TL;DR don't use query_posts() ever.get_posts()
is very similar in usage and accepts the same arguments (with some nuances, like different defaults), but returns an array of posts, doesn't modify global variables and is safe to use anywhere.WP_Query
is the class that powers both behind the scenes, but you can also create and work with your own instance of it. A bit more complex, fewer restrictions, also safe to use anywhere.
-
(1) "und kann überall sicher verwendet werden" -> abernichtfür die MAIN-Schleife verwenden.(2) Denken Sie daran,denglobalen $ query_string zu verwenden.vor der Zeilemit query_posts ();(1) "and is safe to use anywhere" --> but do not use this for the MAIN loop. (2) remember to use global $query_string; before the line that has query_posts();
- 1
- 2011-02-19
- edelwater
-
@scribu dann wieder 'get_posts' wirdfunktionieren,obwohlnichtempfohlen: http://core.trac.wordpress.org/ticket/16545@scribu then again 'get_posts' will work although not advised: http://core.trac.wordpress.org/ticket/16545
- 1
- 2011-02-19
- edelwater
-
Ichglaube,dass "query_posts" auchinsofern wenigereffizientist,alses zusätzliche Abfragen ausführt. Wenn Sienur "WP_Query"für Ihre Hauptschleife verwenden,wirdnur diein WP_Query ausgewählte Abfrage ausgeführt.I believe that `query_posts` is also less efficient in that it will run additional queries, when if you use only `WP_Query` for your main loop, it will only run the query you choose in WP_Query.
- 1
- 2011-08-08
- jjeaton
-
@jjeaton `query_posts ()`isteine winzige Wrapper-Funktionfür `WP_Query`. Daseinzige zusätzliche Element (gemäß Flussdiagramm)ist das Überschreiben desglobalen` $ wp_query`@jjeaton `query_posts()` is tiny wrapper function for `WP_Query`, the only extra thing it does (as per flowchart) is overwriting global `$wp_query`
- 10
- 2011-08-08
- Rarst
-
@Rarst Ich habemich auf [diesen Abschnittim Codexfür query_posts] (http://codex.wordpress.org/Function_Reference/query_posts#Additional_SQL_Queries)bezogen,kannmichjedoch hinsichtlich der Auswirkung auf die Leistungirren.Wenn Sie WP_Querynichtin Ihrer Vorlagendatei verwenden,führt diesebenfalls zumgleichen Ergebnis (d. H. Wegwerfen Ihrer Abfrage underneutes Ausführen)@Rarst I was referring to [this section in the Codex for query_posts](http://codex.wordpress.org/Function_Reference/query_posts#Additional_SQL_Queries) however, I may be mistaken regarding the effect on performance. Unless using WP_Query in your template file will also have the same result (i.e. throwing away your query, and re-executing)
- 1
- 2011-08-08
- jjeaton
-
@jjeaton Das Ersetzen von `query_posts ()` durch `WP_Query` hat keinen Unterschiedin der Leistung. Die Abfrage der Originalseite wird weiterhin ausgeführt,da dies Teil der Kernlastist.Diese Abfragen werden auch dann ausgeführt,wenn Ihre Vorlagendatei überhaupt keine Schleifeenthält.@jjeaton Replacing `query_posts()` with `WP_Query` will make no difference in performance, original page's query will still run because that is part of core load. Those queries will run even if your template file has no loop at all.
- 9
- 2011-08-08
- Rarst
-
Ich kann das Gefühlnicht loswerden,dass dies dergenialste und ambestenbewertete Beitrag auf WPSEist.Sollte auchim Codex sein.Can't get rid off the feeling that this the most genious and upvoted post on WPSE. Should be in Codex as well.
- 122
- 2011-09-16
- kaiser
-
Ok,nachdemichesmehr alseine ganze Weilebetrachtet habe,denkeich,dass `query_posts ()`eine statische Variablefehlt,dienach derersten Verwendung auftruegesetzt wird und - wenn sie zweimal verwendet wird - `_doing_it_wrong ();` auslösen sollte.Ich schätze,ich werde den wp-Hacker oder die Trac-Leute darübernerven.Ok, after looking at it for more than quite a time, I think `query_posts()` is missing a static var that get's set to true after the first use and - if used twice - should trigger `_doing_it_wrong();`. Guess I'm going to bug the wp-hacker or trac guys about this.
- 1
- 2011-09-16
- kaiser
-
@kaisergut ... die zweimalige Verwendung von `query_posts ()`ist ungefähr so schlecht wieeinmal,spieltfürmich keinegroße Rolle.:) Übrigens wird Andrew Nacin Präsentationen zu Fragenmachen under sagte,er könnteeinige Verbesserungen des Flussdiagramms vorschlagen,so dass Version zweimöglicherweisein Zukunfterscheinen wird.@kaiser well... using `query_posts()` twice is about as bad as once, doesn't matter much as for me. :) btw Andrew Nacin is going to do presentation on queries and he said he might propose some improvements to the flowchart, so version two might be coming some time in the future.
- 1
- 2011-09-16
- Rarst
-
Ichfügenurmeine klarste Beschreibung des Problems "Leistung von query_posts ()" hinzu: Die Verwendung von query_posts () oder WP_Queryin einer Vorlagendatei verursacht dieselben Leistungskosten: diegerade durchgeführte Abfrage.Dasim Codex-Artikelbehandelte Problembesteht darin,dass Sie,wenn Sie die Abfragetatsächlichersetzenmöchten,diestun sollten,indem Sie die ursprünglichen query_posts ()mit dem Filter 'parse_query'filtern.Auf diese Weise haben Sienur dieeine,ursprüngliche,wünschenswerte Abfrage,anstatteine zweite Abfrage durchzuführen,um sie umständlich zuersetzen.query_posts ()ist NIE DER WEG !!NOCH NIE!I'll just add my clearest description of the "performance of query_posts()" issue: Using query_posts() or WP_Query within a template file will have the same performnace cost: the query you just performed. The issue discussed in the codex article is that if you actually want to replace the query you should do so by filtering the original query_posts() with the 'parse_query' filter. That way you only have the one, original, desirable query, rather than doing a second query to awkwardly replace it. query_posts() is NEVER THE WAY!! NEVER!
- 9
- 2012-04-19
- jerclarke
-
Der Filter 'request' wird hiernichterwähnt. Diesisteine hervorragende Möglichkeit,die Hauptabfrage zu ändern.Der Vorteilgegenüber query_postsbesteht darin,dass die Funktion die ursprüngliche Abfrage löscht undeine neuegeneriert -genau wiebei Verwendung von WP_Query.Mithilfe des Anforderungsfilters können Sie die ursprüngliche Abfrage ändern,bevor siejemalsgesendet wird.Ich denke,dasistes,worauf @JeremyClarke oben kommt.This makes no mention of the 'request' filter, which is a great way to modify the main query. The advantage over query_posts is that function wipes out the original query and generates a new one - same as if you used WP_Query. By using the request filter, your modifying the original query before its ever sent. I think thats what @JeremyClarke is getting at above.
- 1
- 2012-05-02
- eddiemoya
-
Esgibt eine verdammtgroßartige Erklärung von query_posts,die von John James Jacoby auf dem Blog developer.wordpress.comgeschrieben wurden und die all diese Antworten aus dem Wasser sprengen.Der Hauptpunkt: `query_posts` *modifiziert * die Hauptschleife überhauptnicht,sondern *ersetzt * sie *,nachdem * siebereits ausgeführt wurde.Derbeste Weg,um die Hauptschleife zu ändern,istein `pre_get_posts` Filter. http://developer.wordpress.com/2012/05/14/querying-posts-without-query_posts/There's a freaking awesome explanation of query_posts written by John James Jacoby on the developer.wordpress.com blog that blows all of these answers out of the water. The main point: `query_posts` doesn't *modify* the main loop at all, it *replaces* it *after* it has already run. The best way to modify the main loop is through a `pre_get_posts` filter. http://developer.wordpress.com/2012/05/14/querying-posts-without-query_posts/
- 23
- 2012-06-09
- Dan Gayle
-
@Dan verwechseln Sie dietechnische Implementierung und den Zweck.`query_posts ()`ersetzt zwar das Hauptschleifenobjekt,dientjedoch dazu,die Hauptschleife zu ändern.Auchichmag Schleifenfilter sehr,aber das warnicht die Frage,diegestellt wurde.Esgibt eine Folgefrage voneiner anderen Person zu diesem Thema.@Dan you are confusing technical implementation and purpose. `query_posts()` does replace main loop object, but the purpose of it is to modify main loop. Also I am warmly fond of loop filters, but that wasn't what question asked. There is follow up question from other person on that topic.
- 3
- 2012-06-10
- Rarst
-
Die Frage lautete "Wann sollten Sie ... query_posts () verwenden?". Gemäß der Logik dieses Blogposts und den obigen Kommentarenist die Antwort wahrscheinlichnie.The question was "When should you use... query_posts()" and according to the logic presented by that blog post and the comments above, the answer is likely never.
- 2
- 2012-06-11
- Dan Gayle
-
Also,wennes so schlimmist,warumgibt es "query_posts"?so, if its so bad, why does `query_posts` exist?
- 2
- 2012-09-10
- Manny Fleurmond
-
@Manny Fleurmondist konzeptionell `query_posts ()`ein Versuch,Hauptschleifenkonzepte auf die Ebene des Theme-Template-Tags zu reduzieren (deren Leichtigkeiteine der Stärkenfür die WP-Popularitätist).Die Aufgabe stellte sicheinfach als zu viel heraus,als dassein Vorlagen-Tag siemöglicherweise ausführen könnte.Kernentwickler haben die Möglichkeitgeäußert,dasses veraltet wird,aberichglaube,esgabnoch keine Entscheidung darüber.@Manny Fleurmond conceptually `query_posts()` is an attempt to dumb down main loop concepts to the level of theme template tag (ease of which is one of the strong points for WP popularity). The task simply turned out to be too much for template tag to possibly accomplish. Core developers did voice possibility of it getting deprecated but I don't think there was decision about that yet.
- 1
- 2012-09-10
- Rarst
-
Sie können die WP_Query ()eigentlich "nirgendwo" verwenden,ich habeesgerade versucht und sie krächztimmernochbei $thequery-> have_posts (),unendliche Rekursion,siehe http://wordpress.stackexchange.com/questions/34270You actually can't "use anywhere" the WP_Query(), i just tried and it still croaks at $thequery->have_posts(), infinite recursion, see http://wordpress.stackexchange.com/questions/34270
- 1
- 2014-10-21
- NoBugs
-
@NoBugs Die Schleifein dieser Frageistfalsch undesgibt eine Antwort,dieerklärt,warum.@NoBugs the loop in that question is wrong and there is answer explaining why.
- 1
- 2014-10-21
- Rarst
-
Agghh danke dafür.Schließlichmachtetwas Sinn.Im Ernst,WordPress undihremiese Dokumentation.Ich weißnicht,wie solch verschlungene Software und schlechte Codierungsstandards sopopulär wurden.Agghh thanks for this. Finally, something makes sense. Seriously, WordPress and their lousy documentation. I don't know how such convoluted software and bad coding standards became so popular.
- 1
- 2015-04-16
- racl101
-
Fand diesen Geschwindigkeitstest zwischen wp_query undget_posts http://www.wpclocked.com/Found this speed test between wp_query and get_posts http://www.wpclocked.com/
- 1
- 2015-07-18
- Anagio
-
Ich würdeeinem solchen Test vertrauen ...genau keinem.:) Die Funktionistein sehr dünner Wrapper. Jeder Unterschiedergibt sich ausgeringfügigen Unterschiedenbei Argumenten und/oder Hooks.I would trust such test... exactly none. :) The function is a _very_ thin wrapper, any difference will be coming from slight difference in arguments and/or hooks.
- 1
- 2015-07-19
- Rarst
-
Abfrage_posts ()ist keine Funktionmit Emotionen,sonderneine Funktionmit Nebenwirkungen: Festlegeneinesglobalen.WordPressistmit Funktionenmit Nebenwirkungengestaffelt.Diesist kein Leistungsproblem,sondernein Problemmit der Codequalität.Schauen Sie unter https://developer.wordpress.org/reference/functions/query_posts/nach,was query_postsbewirkt.Verwenden Sie WP_Query,es sei denn,Siemöchtenglobale Variablen durcheinanderbringen.No need for emotions, query_posts() is a function with side effects: setting a global. WordPress is staggerd with functions with side effects. This is not a performance issue but a quality of code issue. Look at https://developer.wordpress.org/reference/functions/query_posts/ and see what query_posts does. Use WP_Query unless you want to mess up global variables.
- 0
- 2020-03-14
- user718960
-
- 2015-06-18
query_posts
- Sie solltenniemalsquery_posts
verwenden. Abgesehen von dem,was @Rarstgesagt hat,besteht das wirklichgroße Problembeiquery_posts
darin,dass das Hauptabfrageobjekt (gespeichertin$ wp_query
)beschädigt wird. Viele Plugins undbenutzerdefinierter Code hängen vom Hauptabfrageobjekt ab. Wenn Sie also das Hauptabfrageobjektbeschädigen,werden die Funktionen von Plugins undbenutzerdefiniertem Code unterbrochen. Nureine solche Funktionist die allesentscheidende Paginierungsfunktion. Wenn Sie also die Hauptabfrage unterbrechen,unterbrechen Sie die Paginierung.Um zubeweisen,wie schlecht
query_posts
in einer Vorlageist,gehen Sie wiefolgt vor und vergleichen Sie die Ergebnissevar_dump ($ wp_query); query_posts ('& amp;posts_per_page=-1'); var_dump ($ wp_query);
get_posts
undWP_Query
sind der richtige Weg,um sekundäre Abfragen zuerstellen ( wie verwandte Beiträge,Schieberegler,vorgestellten Inhalt) und Inhalt auf statischen Titelseiten)mit. Es solltebeachtet werden,dass Sie keine derbeiden zugunsten der Hauptabfrage auf der Startseite,einereinzelnen Seite odereiner anderen Art von Archivseite verwenden sollten,da dies die Seitenfunktionalitätbeeinträchtigt. Wenn Sie die Hauptabfrage ändernmüssen,verwenden Sie dazupre_get_posts
und keinebenutzerdefinierte Abfrage. ( UPDATE: Statische Startseiten undechte Seitenfinden Sie unter Verwenden vonpre_get_posts aufechten Seiten und statischen Titelseiten *)Im Wesentlichen wird
WP_Query
von der Hauptabfrage verwendet und wird auch vonget_posts
verwendet,obwohlget_posts ()
verwendet WP_Query
gibt eseinige Unterschiede-
get_posts
sind schneller alsWP_Query
. Die Marge hängt von der Anzahl der Beiträge auf der Website ab. Der Grund dafürist,dassget_posts
'no_found_rows'=>true
ist standardmäßigWP_Query
,wodurch die Paginierung übersprungen/legal unterbrochen wird. Mit'no_found_rows'=>true
,WP_Query
ruft die Anzahl der abgefragten Posts ab und wird danngelöscht. Standardmäßig wird weiternach allen Postsgesucht,die der Abfrageentsprechen,um die Paginierung zuberechnen.Aus diesem Grund sollte
verwendet werdenget_posts ()
nurfürnichtpaginierte Abfragen verwendet werden. Das Paginieren vonget_posts
ist wirklichein großes Durcheinander.WP_Query
solltefür allepaginierten Abfragen
get_posts ()
wirdnicht von den Filternposts_ *
beeinflusst,wobeiWP_Query
von diesen Filternbeeinflusst wird. Der Grundist,dassget_posts
standardmäßig'unterdrücken_filter'=>true
bisWP_Query
get_posts
verfügt übereinige zusätzliche Parameter wieinclude
,exclude
,numberposts
undKategorie
. Diese Parameter werdenin gültige ParameterfürWP_Query
geändert,bevor sie anWP_Query
übergeben werden.include
wirdinpost__in
geändert,exclude
inpost__not_in
,category
incat
undnumberposts
inposts_per_page
. Nureine Anmerkung: Alle Parameter,die anWP_Query
übergeben werden können,funktionierenmitget_posts
. Sie können ignorieren und Verwenden Sienicht die Standardparameter vonget_posts
get_posts
gibt nur die Eigenschaft$posts
vonWP_Query
zurück,währendWP_Query
das vollständige Objekt zurückgibt. Dieses Objektist sehrnützlich,wennes um Bedingungen,Paginierung und anderenützliche Informationengeht,dieinnerhalb der Schleife verwendet werden können.get_posts
verwendetnicht die Schleife,sonderneineforeach
-Schleife,um Beiträge anzuzeigen. Außerdem sind standardmäßig keine Vorlagen-Tags verfügbar.setup_postdata ($post)
muss verwendet werden,um die Vorlagen-Tags verfügbar zumachen.WP_Query
verwendet die Schleife und Vorlagen-Tags sind standardmäßig verfügbarget_posts
übergibt'ignore_sticky_posts'=> 1
bisWP_Query
,daherignoriertget_posts
standardmäßig klebrige PostsAuf der Grundlage des oben Gesagten liegtes an Ihnen,ob Sie
get_posts
oderWP_Query
verwenden und was Sietatsächlich aus der Abfragebenötigen. Das Obige sollte Siebei Ihrer Wahl unterstützenquery_posts
- You should never ever usequery_posts
. Apart from what @Rarst has said, the really big issue withquery_posts
is, it breaks the main query object ( stored in$wp_query
). A lot of plugins and custom code relies on the main query object, so breaking the main query object means that you are breaking the functionalities of plugins and custom code. Just one such function is the all important pagination function, so if you break the main query, you break pagination.To prove how bad
query_posts
is, on any template, do the following and compare the resultsvar_dump( $wp_query ); query_posts( '&posts_per_page=-1' ); var_dump( $wp_query );
get_posts
andWP_Query
are the correct way to construct secondary queries ( like related posts, sliders, featured contentand content on static front pages) with. It should be noted, you should not use any of the two in favor of the main query on the home page, single page or any type of archive page as it will break page functionality. If you need to modify the main query, usepre_get_posts
to do so, and not a custom query. (UPDATE: For static front pages and true pages, see Using pre_get_posts on true pages and static front pages*)In essence,
WP_Query
is used by the main query and is also used byget_posts
, but althoughget_posts()
usesWP_Query
, there are a few differencesget_posts
are faster thanWP_Query
. The margin depends on the amount of total posts of the site. The reason for this is,get_posts
passes'no_found_rows' => true
by default toWP_Query
which skips/legally breaks pagination. With'no_found_rows' => true
,WP_Query
gets the amount of posts queried, then bails out, where by default, it further search for all posts matching the query in order to calculate pagination.For this reason,
get_posts()
should be used for non paginated queries only. Paginatingget_posts
is really one big mess.WP_Query
should be used for all paginated queriesget_posts()
aren't influenced by theposts_*
filters whereWP_Query
gets influenced by these filters. The reason is thatget_posts
, by default, passes'suppress_filters' => true
toWP_Query
get_posts
has a couple of extra parameters likeinclude
,exclude
,numberposts
andcategory
. These parameters do get changed into valid parameters forWP_Query
before being passed toWP_Query
.include
gets changed intopost__in
,exclude
intopost__not_in
,category
intocat
andnumberposts
intoposts_per_page
. Just a note, all of the parameters that can be passed toWP_Query
works withget_posts
, you can ignore and not use the default parameters ofget_posts
get_posts
returns just the$posts
property ofWP_Query
whileWP_Query
returns the complete object. This object is quite useful when it comes to conditionals, pagination and other useful info that can be used inside the loop.get_posts
doesn't use the loop, but aforeach
loop to display posts. Also, no template tags are available by default.setup_postdata( $post )
has to be used to make the template tags available.WP_Query
uses the loop and template tags are available by defaultget_posts
passes'ignore_sticky_posts' => 1
toWP_Query
, soget_posts
by default ignores sticky posts
Based on the above, whether to use
get_posts
orWP_Query
is up to you and what do you actually need from the query. The above should guide you in your choice-
Ich wünschte,ich könnte Lieblingsantworten.Daserklärt so viel.I wish I could favorite answers. This explains so much.
- 2
- 2017-06-12
- Athoxx
-
Tolle Erklärung! "get_posts () solltenurfürnichtpaginierte Abfragen verwendet werden. Das Paginieren vonget_postsist wirklichein großes Durcheinander. WP_Query solltefür allepaginierten Abfragen verwendet werden" Istim Grunde alles,wasjemandimo wissenmuss.Great Explanation! "get_posts() should be used for non paginated queries only. Paginating get_posts is really one big mess. WP_Query should be used for all paginated queries" Is basically all someone needs to know imo.
- 2
- 2018-04-19
- Bullyen
-
- 2010-09-13
Dergrundlegende Unterschiedbesteht darin,dass
query_posts()
nur zum Ändern der aktuellen Schleife dient.Sobald Siefertig sind,müssen Sie die Schleife zurücksetzen und auffröhliche Weise senden.Diese Methodeist auchetwaseinfacher zu verstehen,einfach weil Ihre "Abfrage"im Grundeeine URL-Zeichenfolgeist,die Sie an die Funktion übergeben,wiefolgt:query_posts('meta_key=color&meta_value=blue');
Auf der anderen Seiteist
WP_Query
eherein Allzweckwerkzeug und ähnelteher dem direkten Schreiben von MySQL-Abfragen alsquery_posts()
.Sie könnenes auch überall verwenden (nichtnurin der Schleife) undes stört keine aktuell ausgeführten Post-Abfragen.Ich verwende
WP_Query
in der Regel häufiger.Wirklich,es wird auf Ihren speziellen Fall ankommen.The basic difference is that
query_posts()
is really only for modifying the current Loop. Once you're done it's necessary to reset the loop and send it on its merry way. This method is also a little easier to understand, simply because your "query" is basically a URL string that you pass to the function, like so:query_posts('meta_key=color&meta_value=blue');
On the other hand,
WP_Query
is more of a general purpose tool, and is more like directly writing MySQL queries thanquery_posts()
is. You can also use it anywhere (not just in the Loop) and it doesn't interfere with any currently running post queries.I tend to use
WP_Query
more often, as it happens. Really, it's going to come down to your specific case. -
- 2013-07-13
Esisteinfachnichterforderlich,
query_posts()
zu verwenden.Es wird lediglichein neues WP_Query-Objektinstanziiert und diesesneue Objektglobal wp_query
neu zugewiesen.Als Referenzist das Folgende dietatsächliche Funktion
query_posts()
.function query_posts($query) { $GLOBALS['wp_query'] = new WP_Query(); return $GLOBALS['wp_query']->query($query); }
Instanziieren Sie Ihreigenes WP_Query-Objekt,wenn Sieein detailliertesbenutzerdefiniertes Abfrageskripterstellenmöchten.Oder verwenden Sie
get_posts()
,wenn Sie hier und danur leichte Manipulationen vornehmenmüssen.Inbeiden Fällenempfehleich dringend,sich selbsteinen Gefallen zutun und zu
wp_includes/query.php
zugehen und die KlasseWP_Query
zu lesen.There is simply no need to use
query_posts()
. All it does is instantiates a new WP_Query object and reassigns that new object toglobal wp_query
.For reference, the following is that actual
query_posts()
function.function query_posts($query) { $GLOBALS['wp_query'] = new WP_Query(); return $GLOBALS['wp_query']->query($query); }
Instantiate your own WP_Query object if you want to create an in depth custom query script. Or use
get_posts()
if all you need to do is some light manipulation here and there.In either case, I highly recommend doing yourself a favor and going to
wp_includes/query.php
and perusing theWP_Query
class. -
- 2013-07-08
Stellen Sie sicher,dass Sie
wp_reset_query()
verwenden,nachdem Siequery_posts()
verwendet haben,da dies auch andere Abfrageergebnissebeeinflusst.Make sure that you use
wp_reset_query()
after usingquery_posts()
because it will affect other query result also. -
- 2010-09-23
-
- 2017-07-19
- query_posts () : Kannin einemeinzigen Fall verwendet werden,wenn Siemain ändernmüssenAbfrage.Es werden vieleglobale Variablenfestgelegt:
- get_posts () : Esistin der Mechanik sehr ähnlich und akzeptiert dieselben Argumente,gibt jedochein Array zurückvon Beiträgen
- WP_Query : Sie könnenein eigenes Objekt davonerstellen und damit arbeiten.Etwas komplexer,weniger Einschränkungen,istes sicher überall zu verwenden.
- query_posts(): might be used in one and only case if you need to modify main query . It sets a lot of global variables;
- get_posts(): it is very similar in mechanics and accepts same arguments, but returns array of posts
- WP_Query: you can create and work with own object of it. Bit more complex, less restrictions, it is safe to use anywhere.
Es scheint,als ob die Hälfte der Tutorialsim Codex undin der Blogosphäre
query_posts()
und die Hälfte verwendenWP_Query
.Wasist los?