{"id":33740,"date":"2019-11-11T01:36:43","date_gmt":"2019-11-11T09:36:43","guid":{"rendered":"https:\/\/kinqsta.com\/?p=5453"},"modified":"2024-10-04T10:45:21","modified_gmt":"2024-10-04T09:45:21","slug":"requetes-wp","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/","title":{"rendered":"Construire des Requ\u00eates WordPress Efficaces avec WP_Query"},"content":{"rendered":"<p>En tant que d\u00e9veloppeurs WordPress, nous avons souvent besoin de r\u00e9cup\u00e9rer depuis la <a href=\"https:\/\/kinqsta.com\/fr\/blog\/bases-de-donnees-wordpress\/\">base de donn\u00e9es WordPress<\/a> des articles, des pages et d&rsquo;autres contenus r\u00e9pondant \u00e0 des crit\u00e8res sp\u00e9cifiques. Habituellement, nous n&rsquo;avons pas besoin de construire des requ\u00eates SQL (et souvent nous ne devrions pas le faire) parce que la classe <code>WP_Query<\/code> et ses m\u00e9thodes nous fournissent un moyen s\u00fbr et efficace pour r\u00e9cup\u00e9rer les donn\u00e9es de la base de donn\u00e9es. Il suffit de d\u00e9clarer un tableau d&rsquo;arguments, et l&rsquo;objet <code>$query<\/code> va construire la requ\u00eate SQL proprement dite.<\/p>\n<p>Dans cet article, je suppose que vous connaissez d\u00e9j\u00e0 les principes de base de la classe <code><a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_Query\">WP_Query<\/a><\/code> ses <a href=\"https:\/\/codex.wordpress.org\/Query_Overview\">m\u00e9thodes et ses propri\u00e9t\u00e9s<\/a>, et o\u00f9 trouver une liste des <a href=\"https:\/\/codex.wordpress.org\/WordPress_Query_Vars\">variables disponibles<\/a>.<\/p>\n<p>Je vais me concentrer sur les param\u00e8tres fournis sp\u00e9cifiquement par la classe <code>WP_Query<\/code> pour optimiser les requ\u00eates SQL, en r\u00e9duisant le temps d&rsquo;ex\u00e9cution et la consommation de ressources.<\/p>\n<p>Lorsque le trafic et le contenu sont limit\u00e9s, nous ne nous soucions g\u00e9n\u00e9ralement pas de l&rsquo;efficacit\u00e9 de nos requ\u00eates. WordPress construit des requ\u00eates SQL bien optimis\u00e9es et fournit un syst\u00e8me de mise en cache pr\u00eat \u00e0 l&#8217;emploi.<\/p>\n<p>Lorsque le trafic et le contenu du site augmentent de mani\u00e8re significative &#8211; jusqu&rsquo;\u00e0 des milliers d\u2019articles &#8211; alors nous devons consid\u00e9rer le temps d&rsquo;ex\u00e9cution des requ\u00eates.<\/p>\n<ul>\n<li><a href=\"#toolbox\">Notre bo\u00eete \u00e0 outils<\/a><\/li>\n<li><a href=\"#wp-query\">WP_Query &#8211; Pourquoi nous ne comptons pas les lignes<\/a><\/li>\n<li><a href=\"#cache-or-not-cache\">Mettre en cache ou ne pas mettre en cache<\/a><\/li>\n<li><a href=\"#returned-fields\">Champs retourn\u00e9s<\/a><\/li>\n<\/ul>\n<h2 id=\"toolbox\">Notre Bo\u00eete \u00e0 Outils<\/h2>\n<p>Le code que je vais vous montrer a \u00e9t\u00e9 test\u00e9 avec <a href=\"https:\/\/kinqsta.com\/fr\/blog\/query-monitor\/\">Query Monitor<\/a>, une extension gratuite qui fournit des informations essentielles sur les performances des requ\u00eates, les hooks d\u00e9clench\u00e9s, les requ\u00eates HTTP, les r\u00e8gles de r\u00e9\u00e9criture, et bien plus encore.<\/p>\n<p>Alternativement \u00e0 une extension, nous pouvons forcer WordPress \u00e0 stocker les informations de requ\u00eate d\u00e9clarant la constante suivante dans <em>wp-config.php<\/em> :<\/p>\n<pre>define( 'SAVEQUERIES', true );<\/pre>\n<p>Lorsque <code>SAVEQUERIES<\/code> est r\u00e9gl\u00e9 sur <code>true<\/code>, WordPress enregistre les requ\u00eates et un tas d&rsquo;informations utiles dans le tableau <code>$wpdb-&gt;queries<\/code>. Ainsi, les noms des fonctions de l&rsquo;appelant et l&rsquo;erreur d&rsquo;ex\u00e9cution de chaque requ\u00eate peuvent \u00eatre affich\u00e9es en ajoutant le code suivant dans un fichier mod\u00e8le comme <em>footer.php<\/em> :<\/p>\n<pre>if ( current_user_can( 'administrator' ) ) {\n\tglobal $wpdb;\n\techo '&lt;pre&gt;';\n\tprint_r( $wpdb-&gt;queries );\n\techo '&lt;\/pre&gt;';\n}<\/pre>\n<p>Voici un exemple de ce que \u00e7a donne :<\/p>\n<pre>[4] =&gt; Array\n(\n\t[0] =&gt; SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')  ORDER BY wp_posts.post_date DESC LIMIT 0, 10\n\t[1] =&gt; 0.0163011550903\n\t[2] =&gt; require('wp-blog-header.php'), wp, WP-&gt;main, WP-&gt;query_posts, WP_Query-&gt;query, WP_Query-&gt;get_posts, QM_DB-&gt;query\n\t[trace] =&gt; QM_Backtrace Object\n\t\t( ... )\n\t[result] =&gt; 10\n)\n<\/pre>\n<p>Si vous souhaitez approfondir ce sujet, jetez un coup d&rsquo;\u0153il \u00e0 notre tutoriel : <a href=\"https:\/\/kinqsta.com\/fr\/blog\/wp-config-php\/\">Modification de wp-config.php<\/a>.<br \/>\nEnfin, pensez que l\u2019extension et la fonctionnalit\u00e9 int\u00e9gr\u00e9e <code>SAVEQUERIES<\/code> d\u00e9veloppent des outils que nous devrions d\u00e9sactiver dans un environnement de production.<\/p>\n<p>Ceci \u00e9tant dit, voyons comment acc\u00e9l\u00e9rer les requ\u00eates WordPress.<\/p>\n<h2 id=\"wp-query\">WP_Query &#8211; Pourquoi Nous Ne Comptons Pas les Lignes<\/h2>\n<p>Nous pouvons interroger la base de donn\u00e9es avec la fonction <code>get_posts<\/code>, qui retourne un tableau d\u2019articles, ou une nouvelle instance de l&rsquo;objet <code>WP_Query<\/code>. Dans les deux cas, nous pouvons d\u00e9terminer les r\u00e9sultats des requ\u00eates en d\u00e9finissant des valeurs appropri\u00e9es pour des variables sp\u00e9cifiques.<\/p>\n<p>Commen\u00e7ons par un exemple qui montre une boucle commune telle qu&rsquo;elle appara\u00eet habituellement dans un fichier mod\u00e8le :<\/p>\n<pre>\/\/ The Query\n$the_query = new WP_Query( $args );\n\/\/ The Loop\nif ( $the_query-&gt;have_posts() ) {\n\twhile ( $the_query-&gt;have_posts() ) : $the_query-&gt;the_post(); \n\t\t\/\/ Your code here\n\tendwhile;\n} else {\n\t\t\/\/ no posts found\n}\n\/* Restore original Post Data *\/\nwp_reset_postdata();\n<\/pre>\n<p><code>$args<\/code> est un tableau de paires cl\u00e9\/valeur. Ces paires sont appel\u00e9es variables de requ\u00eate et d\u00e9terminent ou affectent la requ\u00eate SQL proprement dite.<br \/>\nLorsque vous interrogez la base de donn\u00e9es \u00e0 partir d&rsquo;une extension, nous pouvons pr\u00e9f\u00e9rer utiliser le filtre <code>pre_get_posts<\/code>, comme le montre l&rsquo;exemple suivant :<\/p>\n<pre>function myplugin_pre_get_posts( $query ) {\n  if ( is_admin() || ! $query-&gt;is_main_query() ){\n\treturn;\n  }\n  $query-&gt;set( 'category_name', 'webdev' );\n}\nadd_action( 'pre_get_posts', 'myplugin_pre_get_posts', 1 );\n<\/pre>\n<p>Une chose importante \u00e0 noter ici est que l&rsquo;objet <code>$query<\/code> est pass\u00e9 par r\u00e9f\u00e9rence, et non par valeur, ce qui signifie que les arguments de requ\u00eate affectent juste une instance <code>$query<\/code> existante.<\/p>\n<p>La m\u00e9thode de <code>set<\/code> d\u00e9finie ajoute un nouvelle variable de requ\u00eate \u00e0 la sp\u00e9cification de requ\u00eate et forcera WordPress \u00e0 r\u00e9cup\u00e9rer tous les articles de la cat\u00e9gorie <code>webdev<\/code>. Ceci est la requ\u00eate r\u00e9sultante :<\/p>\n<pre>SELECT SQL_CALC_FOUND_ROWS wp_posts.ID\nFROM wp_posts \nINNER JOIN wp_term_relationships\nON (wp_posts.ID = wp_term_relationships.object_id)\nWHERE 1=1 \nAND ( wp_term_relationships.term_taxonomy_id IN (12) )\nAND wp_posts.post_type = 'post'\nAND (wp_posts.post_status = 'publish'\nOR wp_posts.post_status = 'private')\nGROUP BY wp_posts.ID\nORDER BY wp_posts.post_date DESC\nLIMIT 0, 10\n<\/pre>\n<p>Dans cet exemple, la valeur <code>LIMIT<\/code> a \u00e9t\u00e9 d\u00e9finie par l&rsquo;utilisateur administrateur dans les options de lecture, comme le montre l&rsquo;image ci-dessous.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2016\/06\/ecran-lecture.png\" alt=\"\u00c9cran de lecture\" width=\"472\" height=\"299\"><\/p>\n<p>Dans les requ\u00eates personnalis\u00e9es, nous pouvons d\u00e9finir le nombre de lignes \u00e0 r\u00e9cup\u00e9rer dans la base de donn\u00e9es gr\u00e2ce \u00e0 l&rsquo;option <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_Query#Pagination_Parameters\">r\u00e9glage de pagination<\/a> <code>posts_per_page<\/code>.<\/p>\n<p>L&rsquo;option <code>SQL_CALC_FOUND_ROWS<\/code> force la requ\u00eate \u00e0 compter le nombre de lignes trouv\u00e9es. Ce num\u00e9ro sera retourn\u00e9 par la fonction <code>FOUND_ROWS()<\/code> SQL, comme dans l&rsquo;exemple suivant :<\/p>\n<pre>SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name\nWHERE id &gt; 100 LIMIT 10;\n\nSELECT FOUND_ROWS();\n<\/pre>\n<p>Malheureusement, <code>SQL_CALC_FOUND_ROWS<\/code> peut ralentir consid\u00e9rablement le temps d&rsquo;ex\u00e9cution de la requ\u00eate.<\/p>\n<p>La bonne nouvelle est que nous pouvons forcer WordPress \u00e0 supprimer l&rsquo;option fournissant la variable <code>no_found_rows<\/code> sous-utilis\u00e9e (et non document\u00e9e).<\/p>\n<p>Si <code>SQL_CALC_FOUND_ROWS<\/code> est omis, <code>FOUND_ROWS()<\/code> retourne le nombre de lignes jusqu&rsquo;\u00e0 la valeur de <code>LIMIT<\/code> (pour en savoir plus \u00e0 ce sujet, voir <a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/information-functions.html#function_found-rows\">la documentation MySQL<\/a>).<\/p>\n<p>Dans une installation WordPress avec quelques centaines d\u2019articles, la m\u00e9ta requ\u00eate suivante a pris 0.0107 secondes :<\/p>\n<pre>SELECT SQL_CALC_FOUND_ROWS wp_posts.ID\nFROM wp_posts \nINNER JOIN wp_postmeta\nON ( wp_posts.ID = wp_postmeta.post_id )\nWHERE 1=1 \nAND ( ( wp_postmeta.meta_key = 'book_author'\nAND CAST(wp_postmeta.meta_value AS CHAR) LIKE '%Isaac Asimov%' ) )\nAND wp_posts.post_type = 'book'\nAND (wp_posts.post_status = 'publish'\nOR wp_posts.post_status = 'private')\nGROUP BY wp_posts.ID\nORDER BY wp_posts.post_date DESC\nLIMIT 0, 10\n<\/pre>\n<p>Supprimer <code>SQL_CALC_FOUND_ROWS<\/code> d\u00e9finit <code>no_found_rows<\/code> sur false, la m\u00eame requ\u00eate a pris 0.0006 secondes.<\/p>\n<figure style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2016\/06\/query_monitor.png\" alt=\"Gr\u00e2ce \u00e0 l\u2019extension Query Monitor, nous pouvons facilement comparer deux requ\u00eates avec et sans option SQL_CALC_FOUND_ROWS\" width=\"800\" height=\"348\"><figcaption class=\"wp-caption-text\">Gr\u00e2ce \u00e0 l\u2019extension Query Monitor, nous pouvons facilement comparer deux requ\u00eates avec et sans option SQL_CALC_FOUND_ROWS<\/figcaption><\/figure>\n<p>Lorsque la table <code>wp_post<\/code> contient des milliers de lignes, l&rsquo;ex\u00e9cution de la requ\u00eate peut prendre quelques secondes.<br \/>\n<strong>Quand nous n&rsquo;avons pas besoin de pagination, nous ne devrions jamais mettre <code>no_found_rows<\/code> sur <code>true<\/code>, ce qui rend la requ\u00eate beaucoup plus rapide.<\/strong><\/p>\n<h2 id=\"cache-or-not-cache\">Mettre en Cache ou ne pas Mettre en Cache<\/h2>\n<p>WordPress fournit un syst\u00e8me de mise en cache int\u00e9gr\u00e9 pr\u00eat \u00e0 l&#8217;emploi. Bien que la mise en cache am\u00e9liore g\u00e9n\u00e9ralement la vitesse de chargement des pages, elle peut entra\u00eener l&rsquo;ex\u00e9cution de certaines requ\u00eates suppl\u00e9mentaires dans la base de donn\u00e9es. De plus, chaque fois qu&rsquo;une requ\u00eate est ex\u00e9cut\u00e9e, un tas de donn\u00e9es inutiles peut \u00eatre demand\u00e9.<\/p>\n<p>Heureusement, WordPress nous permet de d\u00e9sactiver la mise en cache en fournissant trois <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_Query#Caching_Parameters\">param\u00e8tres sp\u00e9cifiques<\/a> :<\/p>\n<ul>\n<li><strong>cache_results<\/strong> : S&rsquo;il y a lieu de mettre en cache les informations publi\u00e9es. Par d\u00e9faut\u00a0: true.<\/li>\n<li><strong>update_post_meta_cache<\/strong> : S&rsquo;il faut mettre \u00e0 jour le cache de m\u00e9ta de l\u2019article. Par d\u00e9faut\u00a0: true.<\/li>\n<li><strong>update_post_term_cache<\/strong> : S&rsquo;il faut mettre \u00e0 jour le cache de terme d\u2019article. Par d\u00e9faut\u00a0: true.<\/li>\n<\/ul>\n<p>Si un syst\u00e8me de cache persistant est activ\u00e9, tel que <a href=\"https:\/\/memcached.org\/\">Memcached<\/a>, nous n&rsquo;avons pas \u00e0 nous soucier des param\u00e8tres de mise en cache car WordPress d\u00e9finir sur false ces arguments par d\u00e9faut.<\/p>\n<p>Dans toute autre situation, nous pouvons construire une requ\u00eate plus rapide avec le code suivant :<\/p>\n<pre>function myplugin_pre_get_posts( $query ) {\n  if ( is_admin() || ! $query-&gt;is_main_query() ){\n\treturn;\n  }\n  $query-&gt;set( 'category_name', 'webdev' );\n\n  $query-&gt;set( 'no_found_rows', true );\n  $query-&gt;set( 'update_post_meta_cache', false );\n  $query-&gt;set( 'update_post_term_cache', false );\n}\nadd_action( 'pre_get_posts', 'myplugin_pre_get_posts', 1 );\n<\/pre>\n<p><strong>Lorsqu&rsquo;un syst\u00e8me de mise en cache permanent n&rsquo;est pas disponible, les requ\u00eates renvoyant de petites quantit\u00e9s de donn\u00e9es ne doivent pas \u00eatre mises en cache.<\/strong><\/p>\n<h2 id=\"returned-fields\">Champs Retourn\u00e9s<\/h2>\n<p>En r\u00e8gle g\u00e9n\u00e9rale, nous ne devrions jamais interroger la base de donn\u00e9es \u00e0 la recherche de champs inutiles. La classe <code>WP_Query<\/code> fournit l&rsquo;argument des champs, qui permet de limiter les champs retourn\u00e9s aux ID ou aux champs <code>\u00ab\u00a0id=&gt;parent\u00a0\u00bb<\/code>. Le fichier source <a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/4.5.2\/src\/wp-includes\/query.php#L1494\">documente<\/a> l&rsquo;argument des champs comme suit :<\/p>\n<blockquote><p>Quels champs retourner. Champ unique ou tous les champs (cha\u00eene), ou tableau de champs. \u00ab\u00a0id=&gt;parent\u00a0\u00bb utilise\u00a0\u00ab\u00a0id\u00a0\u00bb et \u00ab\u00a0post_parent\u00a0\u00bb. Par d\u00e9faut, tous les champs. Accepte \u00ab\u00a0ids\u00a0\u00bb, \u00ab\u00a0id=&gt;parent\u00a0\u00bb.<\/p><\/blockquote>\n<p>La variable des champs admet <code>\u00ab\u00a0ids\u00a0\u00bb<\/code> et <code>\u00ab\u00a0id=&gt;parent\u00a0\u00bb<\/code>, et par d\u00e9faut * (toute autre valeur), bien que vous remarquerez que par d\u00e9faut WordPress mettra la valeur des ids dans plusieurs requ\u00eates.<br \/>\nEnfin, nous pouvons optimiser notre premi\u00e8re requ\u00eate :<\/p>\n<pre>&lt;?php\n$args = array( \n\t'no_found_rows' =&gt; true, \n\t'update_post_meta_cache' =&gt; false, \n\t'update_post_term_cache' =&gt; false, \n\t'category_name' =&gt; 'cms', \n\t'fields' =&gt; 'ids'\n);\n\/\/ The Query\n$the_query = new WP_Query( $args );\n\/\/ The Loop\nif ( $the_query-&gt;have_posts() ) {\n\t?&gt;\n\t&lt;ul&gt;\n\t&lt;?php while ( $the_query-&gt;have_posts() ) : $the_query-&gt;the_post(); ?&gt;\n\t\t&lt;li&gt;&lt;a href=\"&lt;?php the_permalink(); ?&gt;\" rel=\"bookmark\" title=\"Permanent Link to &lt;?php the_title_attribute(); ?&gt;\"&gt;&lt;?php the_title(); ?&gt;&lt;\/a&gt;&lt;\/li&gt;\n\t&lt;?php endwhile; ?&gt;\n\t&lt;\/ul&gt;\n\t&lt;?php\n} else {\n\t\/\/ no posts found\n}\n\/* Restore original Post Data *\/\nwp_reset_postdata();\n?&gt;\n<\/pre>\n<p><strong> Lorsque des champs sp\u00e9cifiques ne sont pas n\u00e9cessaires, limitez les champs retourn\u00e9s aux IDs. <\/strong><\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Consid\u00e9rant la vitesse de requ\u00eate peut ne pas apporter d&rsquo;\u00e9normes avantages pour les petits sites Web avec quelques centaines d\u2019articles. Si vous voulez vous pr\u00e9parer \u00e0 la croissance ou si vous avez un grand site Web avec des requ\u00eates lourdes, vous devriez optimiser vos requ\u00eates WordPress. Des requ\u00eates inefficaces peuvent ralentir consid\u00e9rablement le chargement des pages, mais avec quelques modifications simples, vous pouvez acc\u00e9l\u00e9rer consid\u00e9rablement votre site Web.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When traffic and content are limited, we don&rsquo;t care about query speed. But when site content grows up to thousands of posts, we must consider the query execution time. In this post I will focus on those parameters provided by the WP_Query class specifically to optimize the SQL queries, reducing execution time and resource consumption.<\/p>\n","protected":false},"author":36,"featured_media":33744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[47,33],"topic":[1028],"class_list":["post-33740","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-webdev","tag-wordpress","topic-developpement-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Construire des Requ\u00eates WordPress Efficaces avec WP_Query<\/title>\n<meta name=\"description\" content=\"Dans ce tutoriel, nous allons vous montrer comment utiliser la classe WP_Query sp\u00e9cifiquement pour optimiser les requ\u00eates SQL, r\u00e9duisant le temps d&#039;ex\u00e9cution et la consommation de ressources.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Construire des Requ\u00eates WordPress Efficaces avec WP_Query\" \/>\n<meta property=\"og:description\" content=\"Dans ce tutoriel, nous allons vous montrer comment utiliser la classe WP_Query sp\u00e9cifiquement pour optimiser les requ\u00eates SQL, r\u00e9duisant le temps d&#039;ex\u00e9cution et la consommation de ressources.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-11T09:36:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-04T09:45:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"998\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Dans ce tutoriel, nous allons vous montrer comment utiliser la classe WP_Query sp\u00e9cifiquement pour optimiser les requ\u00eates SQL, r\u00e9duisant le temps d&#039;ex\u00e9cution et la consommation de ressources.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"Construire des Requ\u00eates WordPress Efficaces avec WP_Query\",\"datePublished\":\"2019-11-11T09:36:43+00:00\",\"dateModified\":\"2024-10-04T09:45:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/\"},\"wordCount\":1384,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg\",\"keywords\":[\"webdev\",\"WordPress\"],\"articleSection\":[\"D\u00e9veloppement WordPress\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/\",\"name\":\"Construire des Requ\u00eates WordPress Efficaces avec WP_Query\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg\",\"datePublished\":\"2019-11-11T09:36:43+00:00\",\"dateModified\":\"2024-10-04T09:45:21+00:00\",\"description\":\"Dans ce tutoriel, nous allons vous montrer comment utiliser la classe WP_Query sp\u00e9cifiquement pour optimiser les requ\u00eates SQL, r\u00e9duisant le temps d'ex\u00e9cution et la consommation de ressources.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg\",\"width\":1600,\"height\":998,\"caption\":\"Construire des Requ\u00eates WordPress Efficaces avec WP_Query\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"D\u00e9veloppement WordPress\",\"item\":\"https:\/\/kinqsta.com\/fr\/sujets\/developpement-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Construire des Requ\u00eates WordPress Efficaces avec WP_Query\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Construire des Requ\u00eates WordPress Efficaces avec WP_Query","description":"Dans ce tutoriel, nous allons vous montrer comment utiliser la classe WP_Query sp\u00e9cifiquement pour optimiser les requ\u00eates SQL, r\u00e9duisant le temps d'ex\u00e9cution et la consommation de ressources.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/","og_locale":"fr_FR","og_type":"article","og_title":"Construire des Requ\u00eates WordPress Efficaces avec WP_Query","og_description":"Dans ce tutoriel, nous allons vous montrer comment utiliser la classe WP_Query sp\u00e9cifiquement pour optimiser les requ\u00eates SQL, r\u00e9duisant le temps d'ex\u00e9cution et la consommation de ressources.","og_url":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2019-11-11T09:36:43+00:00","article_modified_time":"2024-10-04T09:45:21+00:00","og_image":[{"width":1600,"height":998,"url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg","type":"image\/jpeg"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"Dans ce tutoriel, nous allons vous montrer comment utiliser la classe WP_Query sp\u00e9cifiquement pour optimiser les requ\u00eates SQL, r\u00e9duisant le temps d'ex\u00e9cution et la consommation de ressources.","twitter_image":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg","twitter_creator":"@carlodaniele","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Carlo Daniele","Dur\u00e9e de lecture estim\u00e9e":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"Construire des Requ\u00eates WordPress Efficaces avec WP_Query","datePublished":"2019-11-11T09:36:43+00:00","dateModified":"2024-10-04T09:45:21+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/"},"wordCount":1384,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg","keywords":["webdev","WordPress"],"articleSection":["D\u00e9veloppement WordPress"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/","url":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/","name":"Construire des Requ\u00eates WordPress Efficaces avec WP_Query","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg","datePublished":"2019-11-11T09:36:43+00:00","dateModified":"2024-10-04T09:45:21+00:00","description":"Dans ce tutoriel, nous allons vous montrer comment utiliser la classe WP_Query sp\u00e9cifiquement pour optimiser les requ\u00eates SQL, r\u00e9duisant le temps d'ex\u00e9cution et la consommation de ressources.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#primaryimage","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2019\/11\/requetes-wp.jpg","width":1600,"height":998,"caption":"Construire des Requ\u00eates WordPress Efficaces avec WP_Query"},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/fr\/blog\/requetes-wp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"D\u00e9veloppement WordPress","item":"https:\/\/kinqsta.com\/fr\/sujets\/developpement-wordpress\/"},{"@type":"ListItem","position":3,"name":"Construire des Requ\u00eates WordPress Efficaces avec WP_Query"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/fr\/#website","url":"https:\/\/kinqsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinqsta.com\/fr\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/33740","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/comments?post=33740"}],"version-history":[{"count":4,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/33740\/revisions"}],"predecessor-version":[{"id":33779,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/33740\/revisions\/33779"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/33740\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/33740\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/33740\/translations\/fr"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/33740\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/33740\/translations\/pt"},{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/33740\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media\/33744"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media?parent=33740"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/tags?post=33740"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/topic?post=33740"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}