{"id":228904,"date":"2022-10-23T17:20:00","date_gmt":"2022-10-23T14:20:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228904"},"modified":"2022-11-09T04:44:29","modified_gmt":"2022-11-09T01:44:29","slug":"requetes-a-distance-avec-wp_remote_get","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/requetes-a-distance-avec-wp_remote_get\/","title":{"rendered":"Requ\u00eates \u00e0 distance avec wp_remote_get"},"content":{"rendered":"\n<p>Si vous avez lu l&rsquo;un de mes articles pr\u00e9c\u00e9dents sur la r\u00e9cup\u00e9ration de fichiers distants, alors vous savez que les vieilles habitudes ont la vie dure car j&rsquo;utilise souvent <code>file_get_contents<\/code>plut\u00f4t que <code>wp_remote_get<\/code>.<\/p>\n<p>Donc, comme on le fait quand on blogue, j&rsquo;ai pens\u00e9 qu&rsquo;il serait utile de partager un exemple simple d&rsquo;utilisation <code>wp_remote_get<\/code>dans votre travail quotidien.<\/p>\n<p>Le message ci-dessous n&rsquo;est qu&rsquo;un extrait de la fa\u00e7on de l&rsquo;utiliser. Autrement dit, il ne montrera pas comment concevoir, par exemple, une classe autour d&rsquo;elle ou une interface utilisateur permettant aux utilisateurs de t\u00e9l\u00e9charger un fichier. Mais cela devrait suffire \u00e0 d\u00e9marrer les choses.<\/p>\n<p>Et j&rsquo;inclurai comment utiliser la documentation de l&rsquo;API et comprendre comment l&rsquo;exploiter lors de l&rsquo;utilisation d&rsquo;une fonction comme celle-ci.<\/p>\n<h2>Pourquoi utiliser wp_remote_get\u00a0?<\/h2>\n<p>Bien que je n&rsquo;utilise pas toujours l&rsquo;API WordPress (ce qui est g\u00e9n\u00e9ralement d\u00fb, encore une fois, \u00e0 de vieilles habitudes ou \u00e0 l&rsquo;ignorance d&rsquo;une fonction), j&rsquo;essaie.<\/p>\n<p>Et je crois fermement que si vous travaillez dans l&rsquo;environnement particulier d&rsquo;une application et que ladite application fournit une API pour quelque chose, alors vous devriez l&rsquo;utiliser.<\/p>\n<h3>Comment lire les documents<\/h3>\n<p>Si vous savez comment tirer parti de la documentation, vous pouvez ignorer cette section.<\/p>\n<p>Cela dit, voici ce que dit la documentation <code>wp_remote_get<\/code>:<\/p>\n<blockquote>\n<p>R\u00e9cup\u00e9rez la r\u00e9ponse brute de la requ\u00eate HTTP \u00e0 l&rsquo;aide de la m\u00e9thode <strong>GET<\/strong>. Les r\u00e9sultats incluent les en-t\u00eates et le contenu HTTP.<\/p>\n<\/blockquote>\n<p>Vous pouvez en savoir plus \u00e0 la fois sur cette page <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_remote_get\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">du Codex<\/a> et sur cette page des <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ressources pour les d\u00e9veloppeurs<\/a>. Mais avant d&rsquo;utiliser r\u00e9ellement la fonction, il est important de comprendre ce qu&rsquo;elle accepte et ce qu&rsquo;elle renvoie.<\/p>\n<p>Et la fonction accepte deux param\u00e8tres :<\/p>\n<ol>\n<li>l&rsquo;URL vers laquelle la demande est faite,<\/li>\n<li>l&rsquo;ensemble des arguments requis pour la requ\u00eate (ce qui sort du cadre de cet article).<\/li>\n<\/ol>\n<p>Et wp_remote_get renvoie des r\u00e9sultats mitig\u00e9s en fonction du r\u00e9sultat de la requ\u00eate. Selon les ressources pour d\u00e9veloppeurs\u00a0:<\/p>\n<blockquote>\n<p>(WP_Error|array) La r\u00e9ponse ou WP_Error en cas d&rsquo;\u00e9chec.<\/p>\n<\/blockquote>\n<p>\u00c0 ce stade, nous savons ce que fait la fonction, ce qu&rsquo;elle accepte et ce qu&rsquo;elle renvoie. Nous avons donc suffisamment de choses \u00e0 faire concernant la mise en place d&rsquo;un exemple simple.<\/p>\n<h3>Utilisation de wp_remote_get<\/h3>\n<p>Avec tout ce qui pr\u00e9c\u00e8de en place, voici un exemple simple de la fa\u00e7on de r\u00e9cup\u00e9rer un fichier \u00e0 partir d&rsquo;une URL donn\u00e9e. Je suppose que l&rsquo;URL se trouve sur votre serveur local (parce que je ne veux pas demander d&rsquo;informations \u00e0 d&rsquo;autres serveurs dans ce message), c&rsquo;est pourquoi le domaine est le TLD de point-local.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/690a76864cd305dda1b3456faba3fff2#file-00-wp_remote_get-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Les commentaires devraient expliquer ce qui se passe<\/a>, mais je proposerai quelques r\u00e9flexions suppl\u00e9mentaires apr\u00e8s cela.<\/p>\n<pre><code>&lt;?php\n\n$file = wp_remote_get( 'https:\/\/example.local\/file.png' );\nif (! isset( $file['headers'])) {\n\n  \/*\n   * TODO: You may want to return early here, display an error,\n   * or provide messaging to the user.\n   *\/\n}\n\nif (is_wp_error( $file)) {\n\n  \/*\n   * TODO: Display an error message to the user that the file they\n   * requested was not successfully retrieved.\n   *\/\n}\n\n\/* \n * Get the base directory where we'll store the file. This will just be \n * wp-content\/uploads.\n *\/\n$upload_dir   = wp_upload_dir();\n$upload_dir = trailingslashit( $upload_dir['basedir'] );\n\n\/*\n * Give the file a name that we'll use to write to disk. And\n * build the path to the file including the directory and file name.\n *\/\n$uploaded_filename = 'uploaded.png';\n$file_path         = $upload_dir. $uploaded_filename;\n\n\/*\n * Open a resource for writing the file, write the data, and then close\n * the resource.\n *\/\n$resource = fopen( $file_path, 'w' );\nfwrite( $resource, $file['body'] );\nfclose( $resource );\n<\/code><\/pre>\n<p>Les remarques les plus importantes sont les suivantes\u00a0:<\/p>\n<ol>\n<li>V\u00e9rifiez les en-t\u00eates pour vous assurer qu&rsquo;ils sont d\u00e9finis. Si ce n&rsquo;est pas le cas, il n&rsquo;est pas n\u00e9cessaire de saisir le corps du fichier.<\/li>\n<li>S&rsquo;il y a une erreur, nous devons la g\u00e9rer avec \u00e9l\u00e9gance.<\/li>\n<li>Si tout le reste est v\u00e9rifi\u00e9, nous sommes pr\u00eats \u00e0 \u00e9crire le fichier sur le disque. J&rsquo;utilise les fonctions de fichier de PHP pour ce faire. C&rsquo;est un peu en dehors de la port\u00e9e de l&rsquo;article, mais cela devrait \u00eatre facile \u00e0 comprendre si vous \u00e9tudiez les liens ci-dessous.<\/li>\n<\/ol>\n<p>En fin de compte, l&rsquo;utilisation <code>wp_remote_get<\/code>vous offre de nombreuses fonctionnalit\u00e9s int\u00e9gr\u00e9es dans une fonction facile \u00e0 utiliser.<\/p>\n<h2>Quelques ressources PHP<\/h2>\n<ul>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.fopen.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ouvrir<\/a><\/li>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.fwrite.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">f\u00e9crire<\/a><\/li>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.fclose.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fermer<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comme on le fait pour les blogs, j&rsquo;ai pens\u00e9 qu&rsquo;il serait utile de partager un exemple simple d&rsquo;utilisation de wp_remote_get dans votre travail quotidien.<\/p>\n","protected":false},"author":1,"featured_media":168036,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,893,717,841,862],"tags":[1167],"class_list":["post-228904","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-developpeur","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/228904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=228904"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/228904\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/168036"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=228904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=228904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=228904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}