{"id":229320,"date":"2022-10-23T17:10:00","date_gmt":"2022-10-23T14:10:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229320"},"modified":"2022-11-09T06:28:55","modified_gmt":"2022-11-09T03:28:55","slug":"richieste-remote-con-wp_remote_get","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/richieste-remote-con-wp_remote_get\/","title":{"rendered":"Richieste remote con wp_remote_get"},"content":{"rendered":"\n<p>Se hai letto uno dei miei post precedenti sul recupero di file remoti, allora sai che le vecchie abitudini sono dure a morire perch\u00e9 io uso spesso <code>file_get_contents<\/code>piuttosto che <code>wp_remote_get<\/code>.<\/p>\n<p>Quindi, come si fa quando si blogga, ho pensato che sarebbe stato utile condividere un semplice esempio di come utilizzarlo <code>wp_remote_get<\/code>nel lavoro quotidiano.<\/p>\n<p>Il post qui sotto \u00e8 solo un frammento di come usarlo. Cio\u00e8, non mostrer\u00e0 come progettare, ad esempio, una classe attorno ad esso o un&#8217;interfaccia utente che consenta agli utenti di caricare un file. Ma questo dovrebbe essere sufficiente per iniziare le cose.<\/p>\n<p>E includer\u00f2 come prendere la documentazione dell&#8217;API e capire come sfruttarla quando si utilizza una funzione come questa.<\/p>\n<h2>Perch\u00e9 usare wp_remote_get?<\/h2>\n<p>Anche se non utilizzo sempre l&#8217;API di WordPress (che di solito \u00e8 perch\u00e9, ancora una volta, le vecchie abitudini si ripetono o perch\u00e9 non sono a conoscenza di una funzione), ci provo.<\/p>\n<p>E credo fermamente che se stai lavorando in un particolare ambiente di un&#8217;applicazione e detta applicazione fornisce un&#8217;API per qualcosa, dovresti usarla.<\/p>\n<h3>Come leggere i documenti<\/h3>\n<p>Se hai familiarit\u00e0 con come sfruttare la documentazione, puoi saltare questa sezione.<\/p>\n<p>Detto questo, ecco cosa <code>wp_remote_get<\/code>dice la documentazione in giro:<\/p>\n<blockquote>\n<p>Recupera la risposta grezza dalla richiesta HTTP utilizzando il metodo <strong>GET .<\/strong> I risultati includono intestazioni e contenuto HTTP.<\/p>\n<\/blockquote>\n<p>Puoi leggere di pi\u00f9 sia su questa pagina <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_remote_get\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nel Codex<\/a> che su questa pagina nelle <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Risorse per gli sviluppatori<\/a>. Ma prima di utilizzare effettivamente la funzione, \u00e8 importante capire cosa accetta e cosa restituisce.<\/p>\n<p>E la funzione accetta due parametri:<\/p>\n<ol>\n<li>l&#8217;URL a cui viene inoltrata la richiesta,<\/li>\n<li>l&#8217;insieme degli argomenti richiesti per la richiesta (che esula dallo scopo di questo post).<\/li>\n<\/ol>\n<p>E wp_remote_get restituisce risultati misti in base all&#8217;esito della richiesta. Secondo le risorse per gli sviluppatori:<\/p>\n<blockquote>\n<p>(WP_Error|array) La risposta o WP_Error in caso di errore.<\/p>\n<\/blockquote>\n<p>A questo punto, sappiamo cosa fa la funzione, cosa accetta e cosa restituisce. Quindi abbiamo abbastanza per andare avanti per quanto riguarda la creazione di un semplice esempio.<\/p>\n<h3>Usando wp_remote_get<\/h3>\n<p>Con tutto quanto sopra in atto, ecco un semplice esempio di come recuperare un file da un determinato URL. Presumo che l&#8217;URL sia sul tuo server locale (perch\u00e9 non voglio entrare nella richiesta di informazioni da altri server in questo post), motivo per cui il dominio \u00e8 il TLD di dot-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\">I commenti dovrebbero spiegare cosa sta succedendo<\/a>, ma dopo offrir\u00f2 alcuni pensieri in pi\u00f9.<\/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>Le cose pi\u00f9 importanti da notare sono le seguenti:<\/p>\n<ol>\n<li>Controlla le intestazioni per assicurarti che siano impostate. In caso contrario, non \u00e8 necessario procedere con l&#8217;acquisizione del corpo del file.<\/li>\n<li>Se c&#8217;\u00e8 un errore, allora dobbiamo gestirlo con grazia.<\/li>\n<li>Se tutto il resto va a buon fine, allora siamo pronti per scrivere il file su disco. Sto usando le funzioni di file di PHP per farlo. \u00c8 un po&#8217; fuori dallo scopo del post, ma dovrebbe essere facile da capire se studi i link sottostanti.<\/li>\n<\/ol>\n<p>In definitiva, l&#8217;utilizzo <code>wp_remote_get<\/code>ti offre molte funzionalit\u00e0 racchiuse in una funzione facile da usare.<\/p>\n<h2>Alcune risorse 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\">fope<\/a><\/li>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.fwrite.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fscrivi<\/a><\/li>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.fclose.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fclose<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come si fa quando si blogga, ho pensato che sarebbe stato utile condividere un semplice esempio di come utilizzare wp_remote_get nel lavoro quotidiano.<\/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":[918,896,720,844,865],"tags":[1168],"class_list":["post-229320","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=229320"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229320\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/168036"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}