Pourquoi query_posts () n'est pas marqué comme obsolète?
-
-
C'est uneexcellente question!Pour ceux qui rencontrent ceproblèmeet quine saventpaspourquoi vousne devriezpas utiliser query_posts (),[ici] (http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-and-pre-get-posts)et [ici] (http://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts/) sont debonnes questionset réponses.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 réponses
- votes
-
- 2016-05-18
Je viens de créer unnouveauticket Trac,ticket # 36874 ,àproposer la dépréciation de
query_posts()
. Que ce soit accepté ounon reste unebonne question.Le vraigrosproblème avec
query_posts()
est qu'ilestencore largement utilisépar lespluginset lesthèmes,même s'il y aeu detrèsbons écrits sur les raisonspour lesquelles vous devriez JAMAIS JAMAIS utilisez-le. Jepense que l'article leplus épique sur WPSEest le suivant:dépréciation!==suppression ,donc déprécier
query_posts()
n'empêcherapas son utilisationpar les développeurs demauvaise qualitéet lespersonnesen général quine connaissentpas WordPresset qui utilisentpeututoriels de qualité comme directives. Pourpreuve,combien de questions recevons-nousencore là où lesgens utilisentcaller_get_posts
dansWP_Query
? Ilest désormais obsolète depuis denombreuses années.Lesfonctionset arguments obsolètespeuvent cependant être supprimés àtoutmoment que les développeursprincipauxjugent opportun,mais celane seproduiraprobablementjamais avec
query_posts()
car cela cassera desmillions de sites. Donc oui,nousne verronsprobablementjamais la suppressiontotale dequery_posts()
- ce quipourrait conduire aufait qu'ilne seraprobablementjamais obsolète.Ceciest cependant unpoint de départ,maisilne fautpas oublier que la dépréciation de quelque chose dans WordPressn'arrêtepas son utilisation.
MISE À JOUR 19mai 2016
Leticket quej'ai soulevéestmaintenantferméet marqué comme étanten doublepour unticket 4 ans ,qui a étéfermé comme wontfix et a été rouvertet restent ouvertset non résolus.
Il semble que les développeursprincipaux s'accrochent à ce vieuxpetit malfidèle. Tout lemondeestintéressé,voici leticketen double vieux de 4 ans
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
-
Pourquoi ont-ilsfermé leticket https://core.trac.wordpress.org/ticket/36874?Merci @PieterGoosenpouvez-vousinclure le lien vers cefil dans votreticket https://core.trac.wordpress.org/ticket/36874puisque cette question concerne leticket 1: 1Why 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 On dirait qu'il a étémarqué comme duplicata car ceproblème a déjà été soulevé ... **il y a 4 ans ** [trouvéici] (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
[unpeu diatribe]
C'est laphilosophie debasepermanente à ce stade que rienn'est vraiment obsolète. L'avis de dépréciation,bien qu'il soitintéressant d'avoir,sera simplementignoré si lafonctionne serapas supprimée à unmoment donné. Il y abeaucoup degens quine développentpas avec
WP_DEBUG
et ne remarquerontpas l'avis s'iln'y aurapas de casse réelle.OTOHmain,cettefonctionest comme l'instruction
goto
. Personnellement,je n'aijamais (pour une définitionpluspetite queprévu) utiliségoto
maisje peux comprendre les argumentspointant vers une situation dans laquelle cen'estpasmalpar défaut. Ilen va demême avecquery_posts
,c'est unmoyen simple de configurertous lesglobalsnécessairespourfaire uneboucle simple,et peut être utile dans un contexte ajax ou rest-api. Jene l'utiliseraisjamaisnonplus dans ces contextes,maisje peux voir que là,c'estplus une question de style de codage qu'unefonction étantmauvaiseen soi.Pour aller unpeuplus loin,leprincipalproblèmeest que lesglobaux doivent être définis. C'est leproblèmeprincipalet non la seulefonction qui aide à les définir.
[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.
-
Etpour la comparaison,est vraiment `query_posts`plus lent qu'une requête secondaire (lire:pas la requêteprincipale).And for the comparison, is really `query_posts` slower than a secondary query (read: not the main query).
- 0
- 2016-05-19
- prosti
-
@prosti,commeil définitet exécute une requête wp_query,à quelpointpeut-il êtreplus lent?bien sûr,il y a desfraisgénéraux,maisnousparlonsprobablement de quelquesmillisecondesici.Cela supposebien sûr que vous l'utilisez dans desendroits où WPne fournitpas de requêtepar défaut.Dans lesendroits oùil lefait,c'estmauvais,pas le `query_posts` lui-mêmemais la requêteinutile qui a étéfaite lors du chargement de WP@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
Ilexiste deuxfonctions
query_posts()
techniquementparlant.Unquery_posts()
esten faitWP_Query::query_posts()
et l'autreest dans l'espaceglobal.Demander à la raison:
Siglobal
query_posts()
est-ce "mal",pourquoin'est-ilpas obsolète?Oupourquoin'estpasmarqué comme
_doing_it_wong
.