¿Por qué query_posts () no está marcado como obsoleto?
-
-
¡Esaes unabuenapregunta!Para otros que seencuentren conesto yno sepanpor quéno deberían usar query_posts (),[aquí] (http://wordpress.stackexchange.com/questions/50761/when-to-use-wp-query-query-posts-and-pre-get-posts) y [aquí] (http://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts/) son algunasbuenaspreguntas y respuestas sobreeltema.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 respuestas
- votos
-
- 2016-05-18
Acabo de crear unnuevoticket de seguimiento,ticket # 36874 ,paraproponer la desaprobación de
query_posts()
. Si será aceptado ono,sigue siendo unabuenapregunta.Elgranproblema real con
query_posts()
es quetodavíaes ampliamente utilizadopor complementos ytemas,aunque ha habidomuybuenosescritos sobreeltema depor qué NUNCA NUNCA utilícelo. Creo que lapublicaciónmás épica aquíen WPSEes la siguiente:desaprobación!==eliminación ,por lo que desaprobar
query_posts()
no detendrá su usoporparte de desarrolladores demala calidad ypersonasen general queno conocen WordPress y que usantutoriales de calidad comopautas. Amodo deprueba,¿cuántaspreguntas recibimostodavía aquí donde lagente usacaller_get_posts
enWP_Query
? Ha quedado obsoleto durantemuchos años.Sinembargo,lasfunciones y argumentos obsoletos sepuedeneliminaren cualquiermomento que los desarrolladoresprincipales lo consideren oportuno,peroestoprobablementenunca sucederá con
query_posts()
ya queesto romperámillones de sitios. Así que sí,probablementenunca veremos laeliminacióntotal dequery_posts()
,lo quepodría llevar al hecho de que lomásprobablees quenunca quede obsoleto.Sinembargo,estees unpunto departida,pero hay que recordar que desaprobar algoen WordPressno detiene su uso.
ACTUALIZACIÓN 19 demayo de 2016
Elboleto que levanté ahoraestá cerrado ymarcado como duplicadopara unboleto de 4 años ,que se cerró como no se arreglará y se volvió a abrir y aúnpermanecen abiertos y sin resolver.
Parece que los desarrolladoresprincipales se aferran aeste viejo yfielmalvado. Todos losinteresados,aquíestáelboleto duplicado de 4 años
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
-
¿Por qué cerraronelticket https://core.trac.wordpress.org/ticket/36874?Porfavor @PieterGoosen ¿puedeincluirelenlace aeste hiloen suboleto https://core.trac.wordpress.org/ticket/36874 ya queestapregunta se relaciona conelboleto 1: 1?Why 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 Parece que semarcó como duplicado,ya queesteproblema ya se hamencionado ... ** Hace 4 años ** [encontrado aquí] (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
[algo despotricar]
Enestemomento,lafilosofíafundamentales quenadaestá realmente desaprobado. El aviso de obsolescencia,aunqueesbuenotenerlo,simplemente seignorará si lafunciónno seeliminaráen algúnmomento. Haymuchaspersonas queno desarrollan con
WP_DEBUG
activado ynonotaránel aviso sino habrá una rotura real.Mano OTOH,estafunciónes como lainstrucción
goto
. Personalmente,nunca (para una definiciónmáspequeña de loesperado) uségoto
peropuedoentender los argumentos que apuntan a alguna situaciónen la quenoesmalopor defecto. Lomismo ocurre conquery_posts
,es unaforma simple de configurartodos losglobalesnecesariospara hacer unbucle simple ypuede ser útilen el contexto ajax o rest-api. Yonunca lo usaríaen esos contextostambién,peropuedo ver que allí,esmás una cuestión deestilo de codificación que unafunción queesmalapor símisma.Profundizando unpocomás,elprincipalproblemaes queesnecesario configurar losglobales. Eseeselproblemaprincipal,no la únicafunción que ayuda a configurarlos.
[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.
-
Ypara la comparación,es realmente `query_posts`más lento que una consulta secundaria (léase:no la consultaprincipal).And for the comparison, is really `query_posts` slower than a secondary query (read: not the main query).
- 0
- 2016-05-19
- prosti
-
@prosti,ya que soloestablece yejecuta un wp_query,¿cuántomás lentopuede ser?Seguro que hay algo de sobrecarga,peroprobablementeestemos hablandomilisegundos aquí.Esto,por supuesto,supone que lo usaen lugares donde WPnoproporciona una consulta deformapredeterminada.En los lugares donde lo haceesmalo,noel `query_posts`en sí,sino la consultainútil que se hizo cuando WP seestaba cargando@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
Hay dosfunciones
query_posts()
técnicamente hablando.Unquery_posts()
esen realidadWP_Query::query_posts()
yel otroestáen elespacioglobal.Preguntar desde la cordura:
Siel
query_posts()
globales "malvado",¿por quénoestá obsoleto?Opor quénoestámarcado como
_doing_it_wong
.