Warum ist query_posts () nicht als veraltet markiert?
-
-
Dasisteine gute Frage!Für andere,dienicht wissen,warum Sie query_posts ()nicht verwenden sollten,[hier] (http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-and-pre-get-posts) und [hier] (http://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts/) sindeinige gute Primer-Fragen und Antworten.That is a great question! For others coming across this who don't know why you shouldn't use query_posts(), [here](http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-and-pre-get-posts) and [here](http://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts/) are some good primer Q&A's on it.
- 2
- 2016-05-18
- Tim Malone
-
2 Antworten
- Stimmen
-
- 2016-05-18
Ich habegeradeein neues Trac-Ticketerstellt, Ticket Nr. 36874 ,umes vorzuschlagen die Ablehnung von
query_posts()
. Obes akzeptiert wird odernicht,bleibteine gute Frage.Das wirklichgroße Problembei
query_posts()
ist,dassesimmernoch häufig von Plugins und Themes verwendet wird,obwohles wirklichgute Schriften zum Themagegeben hat,warum Sie NIEMALS sollten benutzees. Ich denke,derepischste Beitrag hier auf WPSEist derfolgende:veraltet!==Entfernung ,daher wird die Verwendung von
query_posts()
durch Entwickler von schlechter Qualität und Personenim Allgemeinen,die WordPressnicht kennen und schlechte verwenden,nichtgestoppt Qualitäts-Tutorials als Richtlinien. Wie viele Fragenbekommen wir hiernoch als Beweis,wo Leutecaller_get_posts
inWP_Query
verwenden? Esist seit vielen Jahren veraltet.Veraltete Funktionen und Argumente könnenjedochjederzeitentfernt werden,wenn die Kernentwickler diesfür richtig halten. Dies wirdjedoch höchstwahrscheinlichnie mit
query_posts()
geschehen,da dadurch Millionen von Websitesbeschädigt werden. Alsoja,wir werden wahrscheinlichnie die vollständige Entfernung vonquery_posts()
sehen - was dazuführen könnte,dasses höchstwahrscheinlichnie veraltet sein wird.Diesist zwarein Ausgangspunkt,abermanmussbedenken,dass die Ablehnung vonetwasin WordPress die Verwendungnichtbeendet.
UPDATE 19. Mai 2016
Das vonmirerhobene Ticketistjetztgeschlossen und als Duplikatfürein 4 Jahre altes Ticketmarkiert,das als wontfix geschlossen underneutgeöffnet wurde undbleibenimmernoch offen und ungelöst.
Scheint,als würden die Kernentwickler an diesem alten,treuen,kleinen Übelfesthalten. Alle Interessierten,hierist das doppelte 4 Jahre alte Ticket
I have just created a new trac ticket, ticket #36874, to propose the deprecation of
query_posts()
. Whether or not it will be accepted remains a good question.The real big issue with
query_posts()
is, it is still widely used by plugins and themes, even though there have been really good writings on the subject of why you should NEVER EVER use it. I think the most epic post here on WPSE is the following one:deprecation !== removal, so deprecating
query_posts()
will not stop its usage by poor quality devs and people in general who do not know WordPress and who use poor quality tutorials as guidelines. Just as some proof, how many questions do we still get here where people usecaller_get_posts
inWP_Query
? It has been deprecated for many years now.Deprecated functions and arguments can however be removed at any time the core devs see fit, but this will most probably never happen with
query_posts()
as this will break millions of sites. So yes, we will probably never see the total removal ofquery_posts()
- which might lead to the fact that it will most probably never get deprecated.This is a starting point though, but one has to remember, deprecating something in WordPress does not stop its use.
UPDATE 19 May 2016
The ticket I raised is now closed and marked as duplicate to a 4 year old ticket, which was closed as wontfix and was reopened and still remain open and unresolved.
Seems the core developers are hanging on to this old faithful little evil. Everyone interested, here is the duplicate 4year old ticket
-
Warum haben sie das Ticket https://core.trac.wordpress.org/ticket/36874geschlossen?Bitte @PieterGoosen können Sie den Link zu diesem Threadin Ihr Ticket https://core.trac.wordpress.org/ticket/36874 aufnehmen,da sich diese Frage auf das Ticket 1: 1beziehtWhy they closed the ticket https://core.trac.wordpress.org/ticket/36874? Please @PieterGoosen can you include the link to this thread in your ticket https://core.trac.wordpress.org/ticket/36874 since this question relates to the ticket 1:1
- 0
- 2016-05-19
- prosti
-
@prosti Sieht so aus,als wärees als Duplikatmarkiert worden,da dieses Problembereits angesprochen wurde ... ** vor 4 Jahren ** [hiergefunden] (https://core.trac.wordpress.org/ticket/19631).@prosti Looks like it was marked as duplicate as this issue has already been brought up... **4 years ago** [found here](https://core.trac.wordpress.org/ticket/19631).
- 0
- 2016-05-19
- Howdy_McGee
-
- 2016-05-19
[etwas schimpfen]
Esist an dieser Stelle die ständige Kernphilosophie,dassnichts wirklich veraltetist. Der Hinweis aufeine Ablehnungist zwar schön zu haben,wirdjedochignoriert,wenn die Funktionirgendwannnichtmehrgelöscht wird. Esgibt viele Leute,die sichnichtmit
WP_DEBUG
entwickeln und den Hinweisnichtbemerken,wennes keinentatsächlichen Bruchgibt.OTOH Hand,diese Funktionist wie die Anweisung
goto
. Persönlich habeichnie (füreine kleinere Definition alserwartet)goto
verwendet,aberich kann die Argumente verstehen,die aufeine Situation hinweisen,in deres standardmäßignichtböseist. Gleichesgiltfürquery_posts
. Esisteine einfache Möglichkeit,allefür die Erstellungeinereinfachen Schleifeerforderlichen Globalseinzurichten,und kannim Ajax- oder Rest-API-Kontextnützlich sein. Ich würdeesniemals auchin diesen Kontexten verwenden,aberich kann sehen,dasses dorteher um den Stil des Codierungsstils als umeine Funktiongeht,diefür sichgenommenböseist.Wenn Sieetwastiefergehen,besteht das Hauptproblem darin,dass überhauptglobale Wertefestgelegt werdenmüssen. Diesist das Hauptproblem undnicht dieeinzige Funktion,mit deren Hilfe sieeingestellt werden können.
[somewhat rant]
It is the standing core philosophy at this point that nothing is truly deprecated. Deprecation notice, while it is a nice to have, is just going to be ignored if the function will not actually be dropped at some point. There are many people that do not develop with
WP_DEBUG
on and will not notice the notice if there will not be an actual breakage.OTOH hand, this function is like
goto
statement. Personally I never (for smaller definition then expected) usedgoto
but I can understand the arguments pointing to some situation in which it is not evil by default. Same goes withquery_posts
, it is a simple way to set up all the globals required to make a simple loop, and can be useful in ajax or rest-api context. I would never use it in those contexts as well, but I can see that there, it is more of an issue of style of coding then a function being evil by itself.Going a little deeper, the main problem is that globals need to be set at all. That is the main problem not the one function that helps setting them.
-
Undfür den Vergleichist "query_posts" wirklich langsamer alseine sekundäre Abfrage (sprich:nicht die Hauptabfrage).And for the comparison, is really `query_posts` slower than a secondary query (read: not the main query).
- 0
- 2016-05-19
- prosti
-
@prosti,daesnureine wp_query setzt und ausführt,wie viel langsamer kannes sein?Sicher,esgibt einige Gemeinkosten,aber wir sprechen hier wahrscheinlich über Millisekunden.Dies setztnatürlich voraus,dass Siees an Orten verwenden,an denen WP standardmäßig keine Abfragebereitstellt.An Orten,an denen dies der Fallist,istes schlecht,nicht die "query_posts" selbst,sondern dienutzlose Abfrage,diebeim Laden von WP durchgeführt wurde@prosti, as it just sets and runs a wp_query, how much slower can it be? sure there is some overhead but we probably talking miliseconds here. This of course assumes you use it in places where WP do not provide a query by default. In places where it does it is bad, not the `query_posts`itself but the useless query that was done when WP was loading
- 0
- 2016-05-19
- Mark Kaplun
Technischgesehengibt es zwei
query_posts()
-Funktionen.Einquery_posts()
isttatsächlichWP_Query::query_posts()
und der anderebefindet sichim globalen Raum.Aus Vernunftfragen:
Wennglobal
query_posts()
das "böse"ist,warum wirdesnicht veraltet?Oder warumistnicht als
_doing_it_wong
markiert.