Quand devriez-vous utiliser WP_Query vs query_posts () vs get_posts ()?
-
-
Vérifiez également cette [analyseplus longue] (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 réponses
- votes
-
- 2010-09-13
-
query_posts()
esttrop simplisteet manièreproblématique demodifier la requêteprincipale d'unepageen la remplaçantpar unenouvelleinstance de la requête. Ilestinefficace (réexécute les requêtes SQL)et échouera carrément dans certaines circonstances (surtout souvent lors de lapagination des articles). Tout code WPmoderne doit utiliser desméthodesplusfiables,comme utiliser lepre_get_posts
hook,à ceteffet. TL; DR n'utilisezjamais query_posts () . -
get_posts()
esttrès similaire dans son utilisationet accepte lesmêmes arguments (avec quelquesnuances,comme des valeurspar défaut différentes),mais renvoie untableau d'articles,ne modifiepas les variablesglobaleset peut être utilisén'importe où. -
WP_Query
est la classe qui alimente les deux les scènes,mais vouspouvez également créeret travailler avec votrepropreinstance. Unpeuplus complexe,moins de restrictions,aussi sûr à utilisern'importe où.
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) "etpeut être utilisén'importe où" ->maisne l'utilisezpaspour laboucle MAIN.(2)n'oubliezpas d'utiliserglobal $ query_string;avant la ligne contenant 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
-
@scribupuis ànouveau 'get_posts'fonctionnerabien que celane soitpas conseillé: 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
-
Jepense que `query_posts`est égalementmoinsefficaceen ce sens qu'ilexécutera des requêtes supplémentaires,lorsque si vousn'utilisez que` WP_Query`pour votreboucleprincipale,iln'exécutera que la requête que vous choisissez dans WP_Query.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 ()`est unepetite fonction wrapperpour `WP_Query`,la seule chose supplémentaire qu'ellefait (selon l'organigramme)est d'écraserglobal` $ 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 Jefaisais référence à [cette section du Codexpour query_posts] (http://codex.wordpress.org/Function_Reference/query_posts#Additional_SQL_Queries) cependant,je peuxme tromper concernant l'effet sur lesperformances.Sauf si vous utilisez WP_Query dans votrefichiermodèle,vous obtiendrez également lemême résultat (c'est-à-dire rejeter votre requêteet ré-exécuter)@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 Le remplacement de `query_posts ()`par `WP_Query`ne fera aucune différence dans lesperformances,la requête de lapage d'originefonctionneratoujours car celafaitpartie de la chargeprincipale.Ces requêtes s'exécuterontmême si votrefichiermodèlen'a aucuneboucle.@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
-
Jene peuxpasme débarrasser du sentiment que c'est lepost leplusgénialet leplus voté sur WPSE.Devrait égalementfigurer dans le Codex.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,après l'avoir regardépendantplus d'untemps,je pense que `query_posts ()`manque une variable statique quiestmise àtrue après lapremière utilisationet - sielleest utilisée deuxfois - devrait déclencher `_doing_it_wrong ();`.Je suppose queje vaisbousculer lesgars wp-hacker outrac à ce sujet.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
-
@kaiserehbien ... utiliser `query_posts ()` deuxfoisest àpeuprès aussimauvais qu'unefois,celan'apasbeaucoup d'importance quepourmoi.:)btw Andrew Nacin vafaire uneprésentation sur les requêteset il a dit qu'ilpourraitproposer des améliorations à l'organigramme,donc la version deuxpourrait arriver dans lefutur.@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
-
Je vaisjuste ajouterma description laplus claire duproblème "performance de query_posts ()": l'utilisation de query_posts () ou WP_Query dans unfichiermodèle aura lemême coût deperformance: la requête que vous venez d'effectuer.Leproblème abordé dans l'article du codexest que si vous voulez réellement remplacer la requête,vous devez lefaireen filtrant le query_posts () d'origine avec lefiltre «parse_query».De cettefaçon,vousn'avez qu'une seule requête,originaleet souhaitable,plutôt que defaire une deuxième requêtepour la remplacermaladroitement.query_posts ()n'est JAMAIS LE CHEMIN !!JAMAIS!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
-
Celane fait aucunemention dufiltre «demande»,quiest unexcellentmoyen demodifier la requêteprincipale.L'avantagepar rapport à query_postsest que lafonctionefface la requête d'origineet engénère unenouvelle - comme si vous utilisiez WP_Query.En utilisant lefiltre de demande,vousmodifiez la requête d'origine avant qu'ellene soitenvoyée.Jepense que c'est ce que @JeremyClarke veut dire ci-dessus.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
-
Il y a uneexplicationgénialeet effrayante de query_posts écritepar John James Jacoby sur leblog developer.wordpress.com quifait sautertoutes ces réponses hors de l'eau.Lepointprincipal: `query_posts`ne *modifie *pas * dutout laboucleprincipale,il * la remplace * après * qu'elle a déjà étéexécutée.Lameilleurefaçon demodifier laboucleprincipaleest d'utiliser unfiltre `pre_get_posts`. 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,vous confondezmiseen œuvretechniqueet objectif.`query_posts ()` remplace l'objet de laboucleprincipale,mais lebut de celui-ciest demodifier laboucleprincipale.J'adore aussi lesfiltres deboucle,mais cen'étaitpas la questionposée.Il y a une question de suivi d'une autrepersonne sur ce sujet.@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
-
La question était "Quand devriez-vous utiliser ... query_posts ()"et selon la logiqueprésentéepar cebillet debloget les commentaires ci-dessus,la réponseestprobablementjamais.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
-
alors,si c'est simauvais,pourquoiexiste-t-il des `query_posts`?so, if its so bad, why does `query_posts` exist?
- 2
- 2012-09-10
- Manny Fleurmond
-
@Manny Fleurmond conceptuellement `query_posts ()`est unetentative de réduire les concepts de laboucleprincipale auniveau de labalise demodèle dethème (dont lafacilitéest l'un despointsforts de lapopularité de WP).Latâche s'est simplement avéréetrop lourdepour que labalise demodèlepuisse l'accomplir.Les développeursprincipaux ontfaitpart de lapossibilité qu'il devienne obsolète,maisje nepensepas qu'il y aitencoreeu de décision à ce sujet.@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
-
Enfait,vousne pouvezpas "utilisern'importe où" le WP_Query (),je viens d'essayeret il croassetoujours à $thequery-> have_posts (),récursivitéinfinie,voir 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 laboucle dans cette questionestfausseet il y a une réponseexpliquantpourquoi.@NoBugs the loop in that question is wrong and there is answer explaining why.
- 1
- 2014-10-21
- Rarst
-
Agghhmercipour cela.Enfin,quelque chose a du sens.Sérieusement,WordPresset leurmauvaise documentation.Jene saispas comment detels logiciels compliquéset demauvaisesnormes de codage sont devenus sipopulaires.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
-
J'aitrouvé cetest de vitesseentre wp_queryet get_posts http://www.wpclocked.com/Found this speed test between wp_query and get_posts http://www.wpclocked.com/
- 1
- 2015-07-18
- Anagio
-
Jeferais confiance à unteltest ...exactement aucun.:) Lafonctionest un wrappertrèsfin,toute différenceproviendra d'une légère différence d'argumentset/ou de crochets.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
-
Pasbesoin d'émotions,query_posts ()est unefonction avec deseffets secondaires: définir unglobal.WordPressest doté defonctions avec deseffets secondaires.Cen'estpas unproblème deperformancesmais unproblème de qualité de code.Regardez https://developer.wordpress.org/reference/functions/query_posts/et voyez ce quefait query_posts.Utilisez WP_Query sauf si vous voulezgâcher les variablesglobales.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
- Vousne devriezjamais utiliserquery_posts
. En dehors de ce que @Rarst a dit,letrèsgrosproblème avecquery_posts
est qu'il casse l'objet de requêteprincipal (stocké dans$ wp_query
). Denombreuxpluginset codepersonnalisé reposent sur l'objet de requêteprincipal,donc casser l'objet de requêteprincipal signifie que vous rompez lesfonctionnalités despluginset du codepersonnalisé. Une seule de cesfonctionsest lafonction depagination laplusimportante,donc si vousinterrompez la requêteprincipale,vousinterrompez lapagination.Pourprouver à quelpoint
query_posts
estmauvais,surn'importe quelmodèle,procédez comme suitet comparez les résultatsvar_dump ($ wp_query); query_posts ('& amp;posts_per_page=-1'); var_dump ($ wp_query);
get_posts
etWP_Query
sont lebonmoyen de créer des requêtes secondaires (telles que des articles associés,des curseurs,du contenuen vedetteet le contenu sur lespremièrespages statiques) avec. Il convient denoter que vousne devez utiliser aucun des deuxen faveur de la requêteprincipale sur lapage d'accueil,lapage unique outouttype depage d'archive car celainterrompra lafonctionnalité de lapage. Si vous avezbesoin demodifier la requêteprincipale,utilisezpre_get_posts
pour lefaire,et non une requêtepersonnalisée. ( UPDATE: Pour lespages degarde statiqueset les vraiespages,voir Utilisation depre_get_posts sur les vraiespageset lespremièrespages statiques *)En substance,
WP_Query
est utilisépar la requêteprincipaleet est également utiliséparget_posts
,maisbien queget_posts ()
utiliseWP_Query
,il y a quelques différencesget_posts
sontplus rapides queWP_Query
. Lamarge dépend dumontanttotal despublications du site. La raisonen est queget_posts
passe'no_found_rows'=>true
par défaut àWP_Query
qui saute/rompt légalement lapagination. Avec'no_found_rows'=>true
,WP_Query
obtient lenombre demessagesinterrogés,puis renverse,oùpar défaut,il rechercheplusen détailtous lesmessages correspondant à la requête afin de calculer lapagination.Pour cette raison,
get_posts ()
ne doit être utilisé quepour les requêtesnonpaginées. Paginerget_posts
est vraiment ungrosgâchis.WP_Query
doit être utilisépourtoutes les requêtespaginéesget_posts ()
ne sontpasinfluencéspar lesfiltresposts_ *
oùWP_Query
estinfluencépar cesfiltres. La raisonen est queget_posts
,par défaut,transmet'suppress_filters'=>true
àWP_Query
get_posts
a quelquesparamètres supplémentaires commeinclude
,exclude
,numberposts
etcatégorie
. Cesparamètres sontmodifiésen paramètres validespourWP_Query
avant d'êtretransmis àWP_Query
.include
est changéenpost__in
,exclude
enpost__not_in
,category
encat
etnumberposts
dansposts_per_page
. Juste unenote,tous lesparamètres quipeuvent êtretransmis àWP_Query
fonctionnent avecget_posts
,vous pouvez ignoreret nepas utiliser lesparamètrespar défaut deget_posts
get_posts
renvoie uniquement lapropriété$posts
deWP_Query
tandis queWP_Query
renvoie l'objet complet. Cet objetesttrès utileen ce qui concerne les conditions,lapaginationet d'autresinformations utilespouvant être utilisées dans laboucle.get_posts
n'utilisepas laboucle,mais uneboucleforeach
pour afficher lesmessages. Deplus,aucunebalise demodèlen'est disponiblepar défaut.setup_postdata ($post)
doit être utilisépour rendre lesbalises demodèle disponibles.WP_Query
utilise laboucleet lesbalises demodèle sont disponiblespar défautget_posts
passe'ignore_sticky_posts'=> 1
àWP_Query
,doncget_posts
ignorepar défaut lesmessagespersistants
Sur labase de ce quiprécède,l'utilisation de
get_posts
ouWP_Query
dépend de vouset de ce dont vous avez réellementbesoin dans la requête. Ce quiprécède devrait vousguider dans votre choixquery_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-
J'aimeraispouvoir les réponsespréférées.Celaexpliquetellement.I wish I could favorite answers. This explains so much.
- 2
- 2017-06-12
- Athoxx
-
Grandeexplication! "get_posts ()ne doit être utilisé quepour les requêtesnonpaginées. Paginerget_postsest vraiment ungrosgâchis. WP_Query doit être utilisépourtoutes les requêtespaginées" C'estfondamentalementtout ce que quelqu'un abesoin de savoirimo.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
La différencefondamentaleest que
query_posts()
ne serten réalité qu'àmodifier laboucle actuelle.Unefois que vous avezterminé,ilestnécessaire de réinitialiser laboucleet de l'envoyer sur sonjoyeux chemin.Cetteméthodeest également unpeuplusfacile à comprendre,simplementparce que votre "requête"estessentiellement une chaîne d'URL que vouspassez à lafonction,comme ceci:query_posts('meta_key=color&meta_value=blue');
D'un autre côté,
WP_Query
estplus un outil à usagegénéral,et ressembleplus à l'écriture directe de requêtes MySQL quequery_posts()
.Vouspouvez également l'utilisern'importe où (pas seulement dans laboucle)et iln'interfèrepas avec les requêtes depublicationen cours.J'aitendance à utiliser
WP_Query
plus souvent,car cela arrive.Vraiment,cela dépendra de votre cas spécifique.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
Iln'esttout simplementpasnécessaire d'utiliser
query_posts()
.Tout ce qu'ilfait,c'estinstancier unnouvel objet WP_Queryet réaffecter cenouvel objet àglobal wp_query
.Pour référence,ce qui suitest lafonction
query_posts()
réelle.function query_posts($query) { $GLOBALS['wp_query'] = new WP_Query(); return $GLOBALS['wp_query']->query($query); }
Instanciez votrepropre objet WP_Query si vous souhaitez créer un script de requêtepersonnaliséen profondeur.Ou utilisez
get_posts()
sitout ce que vous avez àfaireest une légèremanipulationiciet là.Dans les deux cas,je vous recommande vivement de vous rendre serviceet d'aller à
wp_includes/query.php
et deparcourir la classeWP_Query
.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
Assurez-vous d'utiliser
wp_reset_query()
après avoir utiliséquery_posts()
car cela affectera également les autres résultats de la requête.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 () :peut être utilisé dans un seulet unique cas si vous devezmodifiermainrequete .Il définit denombreuses variablesglobales;
- get_posts () :ilesttrès similaireen mécaniqueet accepte lesmêmes arguments,mais renvoie untableaudemessages
- WP_Query : vouspouvez créeret travailler avec votrepropre objet.Unpeuplus complexe,moins de restrictions,ilest sûr de l'utilisern'importe où.
- 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.
Il semble que lamoitié des didacticiels du Codex et de lablogosphère utilisent
query_posts()
et lamoitié utiliseWP_Query
.Quelest leproblème?