{"id":229065,"date":"2022-10-23T17:54:00","date_gmt":"2022-10-23T14:54:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229065"},"modified":"2022-11-09T05:23:45","modified_gmt":"2022-11-09T02:23:45","slug":"etaepyynnoet-wp_remote_get-sovelluksella","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/etaepyynnoet-wp_remote_get-sovelluksella\/","title":{"rendered":"Et\u00e4pyynn\u00f6t wp_remote_get-sovelluksella"},"content":{"rendered":"\n<p>Jos luet aiempia viestej\u00e4ni et\u00e4tiedostojen noutamisesta, tied\u00e4t, ett\u00e4 vanhat tavat kuolevat, koska k\u00e4yt\u00e4n <code>file_get_contents<\/code>usein <code>wp_remote_get<\/code>.<\/p>\n<p>Joten, kuten blogia kirjoittaessa, ajattelin, ett\u00e4 olisi hy\u00f6dyllist\u00e4 jakaa yksinkertainen esimerkki siit\u00e4, kuinka sit\u00e4 k\u00e4ytet\u00e4\u00e4n <code>wp_remote_get<\/code>p\u00e4ivitt\u00e4isess\u00e4 ty\u00f6ss\u00e4si.<\/p>\n<p>Alla oleva viesti on vain p\u00e4tk\u00e4 sen k\u00e4yt\u00f6st\u00e4. Eli se ei n\u00e4yt\u00e4, miten suunnitellaan esimerkiksi luokka sen ymp\u00e4rille tai k\u00e4ytt\u00f6liittym\u00e4, jonka avulla k\u00e4ytt\u00e4j\u00e4t voivat ladata tiedoston. Mutta t\u00e4m\u00e4n pit\u00e4isi riitt\u00e4\u00e4 asioiden aloittamiseen.<\/p>\n<p>Ja aion sis\u00e4llytt\u00e4\u00e4 siihen, kuinka API-dokumentaatio otetaan sen ymp\u00e4rille ja miten sit\u00e4 voidaan hy\u00f6dynt\u00e4\u00e4 k\u00e4ytett\u00e4ess\u00e4 t\u00e4llaista toimintoa.<\/p>\n<h2>Miksi k\u00e4ytt\u00e4\u00e4 wp_remote_get?<\/h2>\n<p>Vaikka en aina k\u00e4yt\u00e4 WordPress-sovellusliittym\u00e4\u00e4 (mik\u00e4 johtuu yleens\u00e4 siit\u00e4, ett\u00e4 vanhat tavat jatkuvat edelleen tai koska en ole tietoinen toiminnosta), yrit\u00e4n.<\/p>\n<p>Ja uskon vakaasti, ett\u00e4 jos ty\u00f6skentelet sovelluksen tietyss\u00e4 ymp\u00e4rist\u00f6ss\u00e4 ja kyseinen sovellus tarjoaa API jollekin, sinun tulee k\u00e4ytt\u00e4\u00e4 sit\u00e4.<\/p>\n<h3>Dokumenttien lukeminen<\/h3>\n<p>Jos tied\u00e4t dokumentaation hy\u00f6dynt\u00e4misen, voit ohittaa t\u00e4m\u00e4n osion.<\/p>\n<p>Kun t\u00e4m\u00e4 sanotaan, seuraava dokumentaatio <code>wp_remote_get<\/code>sanoo:<\/p>\n<blockquote>\n<p>Hae raaka vastaus HTTP-pyynn\u00f6st\u00e4 <strong>GET<\/strong> &#8211; menetelm\u00e4ll\u00e4. Tulokset sis\u00e4lt\u00e4v\u00e4t HTTP-otsikot ja sis\u00e4ll\u00f6n.<\/p>\n<\/blockquote>\n<p>Voit lukea lis\u00e4\u00e4 sek\u00e4 t\u00e4lt\u00e4 sivulta <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_remote_get\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Codexista<\/a> ett\u00e4 t\u00e4lt\u00e4 sivulta <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kehitt\u00e4j\u00e4resursseista<\/a>. Mutta ennen kuin k\u00e4yt\u00e4t funktiota, on t\u00e4rke\u00e4\u00e4 ymm\u00e4rt\u00e4\u00e4, mit\u00e4 se hyv\u00e4ksyy ja mit\u00e4 se palauttaa.<\/p>\n<p>Ja funktio hyv\u00e4ksyy kaksi parametria:<\/p>\n<ol>\n<li>URL-osoite, johon pyynt\u00f6 l\u00e4hetet\u00e4\u00e4n,<\/li>\n<li>pyynn\u00f6ss\u00e4 vaadittavat argumentit (joka ei kuulu t\u00e4m\u00e4n viestin piiriin).<\/li>\n<\/ol>\n<p>Ja wp_remote_get palauttaa sekalaisia \u200b\u200btuloksia pyynn\u00f6n tuloksen perusteella. Kehitt\u00e4j\u00e4resurssien mukaan:<\/p>\n<blockquote>\n<p>(WP_Error|array) Vastaus tai WP_Error ep\u00e4onnistuessa.<\/p>\n<\/blockquote>\n<p>T\u00e4ss\u00e4 vaiheessa tied\u00e4mme, mit\u00e4 funktio tekee, mit\u00e4 se hyv\u00e4ksyy ja mit\u00e4 se palauttaa. Meill\u00e4 on siis tarpeeksi jatkettavaa yksinkertaisen esimerkin laatimisessa.<\/p>\n<h3>K\u00e4ytt\u00e4m\u00e4ll\u00e4 wp_remote_get<\/h3>\n<p>Kun kaikki edell\u00e4 mainitut asiat ovat paikoillaan, t\u00e4ss\u00e4 on yksinkertainen esimerkki tiedoston noutamisesta tietyst\u00e4 URL-osoitteesta. Oletan, ett\u00e4 URL-osoite on paikallisella palvelimellasi (koska en halua t\u00e4ss\u00e4 viestiss\u00e4 pyyt\u00e4\u00e4 tietoja muilta palvelimilta), mink\u00e4 vuoksi verkkotunnus on dot-localin TLD.<\/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\">Kommenttien pit\u00e4isi selitt\u00e4\u00e4, mit\u00e4<\/a> tapahtuu, mutta esit\u00e4n sen j\u00e4lkeen muutaman ajatuksen lis\u00e4\u00e4.<\/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>T\u00e4rkeimm\u00e4t huomioitavat asiat ovat seuraavat:<\/p>\n<ol>\n<li>Tarkista otsikot varmistaaksesi, ett\u00e4 ne on asetettu. Jos ei, tiedoston runkoon tarttumista ei tarvitse jatkaa.<\/li>\n<li>Jos on virhe, meid\u00e4n on k\u00e4sitelt\u00e4v\u00e4 se sulavasti.<\/li>\n<li>Jos kaikki muu on kunnossa, olemme valmiita kirjoittamaan tiedoston levylle. K\u00e4yt\u00e4n PHP:n tiedostotoimintoja t\u00e4h\u00e4n. Se on hieman viestin soveltamisalan ulkopuolella, mutta sen pit\u00e4isi olla helppo ymm\u00e4rt\u00e4\u00e4, jos tutkit alla olevia linkkej\u00e4.<\/li>\n<\/ol>\n<p>Loppujen lopuksi k\u00e4ytt\u00f6 <code>wp_remote_get<\/code>tarjoaa sinulle paljon toimintoja k\u00e4\u00e4rittyn\u00e4 helppok\u00e4ytt\u00f6iseen toimintoon.<\/p>\n<h2>Jotkut PHP-resurssit<\/h2>\n<ul>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.fopen.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fopen<\/a><\/li>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.fwrite.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fwrite<\/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\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kuten blogia kirjoittaessani, ajattelin, ett\u00e4 olisi hy\u00f6dyllist\u00e4 jakaa yksinkertainen esimerkki wp_remote_get-k\u00e4yt\u00f6st\u00e4 p\u00e4ivitt\u00e4isess\u00e4 ty\u00f6ss\u00e4si.<\/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":[719,895,917,843,864],"tags":[1166],"class_list":["post-229065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-muut","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=229065"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/168036"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}