{"id":228381,"date":"2022-10-23T17:45:00","date_gmt":"2022-10-23T14:45:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228381"},"modified":"2022-11-09T02:10:23","modified_gmt":"2022-11-08T23:10:23","slug":"remote-requests-med-wp_remote_get","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/remote-requests-med-wp_remote_get\/","title":{"rendered":"Remote Requests med wp_remote_get"},"content":{"rendered":"\n<p>Om du har l\u00e4st n\u00e5got av mina tidigare inl\u00e4gg om att h\u00e4mta fj\u00e4rrfiler, d\u00e5 vet du att gamla vanor d\u00f6r h\u00e5rt eftersom jag ofta anv\u00e4nder <code>file_get_contents<\/code>snarare \u00e4n <code>wp_remote_get<\/code>.<\/p>\n<p>S\u00e5, som man g\u00f6r n\u00e4r man bloggar, t\u00e4nkte jag att det skulle vara bra att dela med sig av ett enkelt exempel p\u00e5 hur man anv\u00e4nder <code>wp_remote_get<\/code>det i ditt dagliga arbete.<\/p>\n<p>Inl\u00e4gget nedan \u00e4r bara ett utdrag av hur man anv\u00e4nder det. Det vill s\u00e4ga, det kommer inte att visa hur man designar, s\u00e4g, en klass runt den eller ett anv\u00e4ndargr\u00e4nssnitt som till\u00e5ter anv\u00e4ndare att ladda upp en fil. Men det h\u00e4r borde r\u00e4cka f\u00f6r att f\u00e5 ig\u00e5ng saker och ting.<\/p>\n<p>Och jag kommer att inkludera hur man tar API-dokumentationen runt den och f\u00f6rst\u00e5r hur man anv\u00e4nder den n\u00e4r man anv\u00e4nder en funktion som denna.<\/p>\n<h2>Varf\u00f6r anv\u00e4nda wp_remote_get?<\/h2>\n<p>\u00c4ven om jag inte alltid anv\u00e4nder WordPress API (vilket vanligtvis beror p\u00e5 att gamla vanor f\u00f6rsvinner eller f\u00f6r att jag inte \u00e4r medveten om en funktion), f\u00f6rs\u00f6ker jag.<\/p>\n<p>Och jag \u00e4r \u00f6vertygad om att om du arbetar i en applikations speciella milj\u00f6 och n\u00e4mnda applikation tillhandah\u00e5ller ett API f\u00f6r n\u00e5got, s\u00e5 b\u00f6r du anv\u00e4nda det.<\/p>\n<h3>Hur man l\u00e4ser dokumenten<\/h3>\n<p>Om du \u00e4r bekant med hur du anv\u00e4nder dokumentation kan du hoppa \u00f6ver det h\u00e4r avsnittet.<\/p>\n<p>Med det sagt, h\u00e4r \u00e4r vad dokumentationen runt <code>wp_remote_get<\/code>s\u00e4ger:<\/p>\n<blockquote>\n<p>H\u00e4mta r\u00e5svaret fr\u00e5n HTTP-f\u00f6rfr\u00e5gan med <strong>GET-<\/strong> metoden. Resultaten inkluderar HTTP-rubriker och inneh\u00e5ll.<\/p>\n<\/blockquote>\n<p>Du kan l\u00e4sa mer p\u00e5 b\u00e5de den h\u00e4r sidan <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_remote_get\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">i Codex<\/a> och den h\u00e4r sidan i <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">utvecklarresurserna<\/a>. Men innan du faktiskt anv\u00e4nder funktionen \u00e4r det viktigt att f\u00f6rst\u00e5 vad den accepterar och vad den returnerar.<\/p>\n<p>Och funktionen accepterar tv\u00e5 parametrar:<\/p>\n<ol>\n<li>URL:en som beg\u00e4ran g\u00f6rs till,<\/li>\n<li>upps\u00e4ttningen argument som kr\u00e4vs f\u00f6r beg\u00e4ran (vilket ligger utanf\u00f6r ramen f\u00f6r detta inl\u00e4gg).<\/li>\n<\/ol>\n<p>Och wp_remote_get returnerar blandade resultat baserat p\u00e5 resultatet av beg\u00e4ran. Enligt utvecklarresurserna:<\/p>\n<blockquote>\n<p>(WP_Error|array) Svaret eller WP_Error vid fel.<\/p>\n<\/blockquote>\n<p>Vid det h\u00e4r laget vet vi vad funktionen g\u00f6r, vad den accepterar och vad den returnerar. S\u00e5 vi har nog att g\u00e5 p\u00e5 n\u00e4r det g\u00e4ller att s\u00e4tta upp ett enkelt exempel.<\/p>\n<h3>Anv\u00e4nder wp_remote_get<\/h3>\n<p>Med allt ovan p\u00e5 plats, h\u00e4r \u00e4r ett enkelt exempel p\u00e5 hur man h\u00e4mtar en fil fr\u00e5n en given URL. Jag antar att URL:en finns p\u00e5 din lokala server (eftersom jag inte vill g\u00e5 in p\u00e5 att beg\u00e4ra information fr\u00e5n andra servrar i det h\u00e4r inl\u00e4gget) vilket \u00e4r anledningen till att dom\u00e4nen \u00e4r dot-locals toppdom\u00e4n.<\/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\">Kommentarerna b\u00f6r f\u00f6rklara vad som h\u00e4nder<\/a>, men jag kommer att ge n\u00e5gra fler tankar efter det.<\/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>Det viktigaste att notera \u00e4r f\u00f6ljande:<\/p>\n<ol>\n<li>Kontrollera rubrikerna f\u00f6r att se till att de \u00e4r inst\u00e4llda. Om inte, s\u00e5 finns det ingen anledning att forts\u00e4tta med att ta tag i filens kropp.<\/li>\n<li>Om det finns ett fel m\u00e5ste vi hantera det p\u00e5 ett elegant s\u00e4tt.<\/li>\n<li>Om allt annat checkar ut \u00e4r vi redo att skriva filen till disken. Jag anv\u00e4nder PHPs filfunktioner f\u00f6r att g\u00f6ra detta. Det ligger lite utanf\u00f6r inl\u00e4ggets ram men borde vara l\u00e4tt att f\u00f6rst\u00e5 om du studerar l\u00e4nkarna nedan.<\/li>\n<\/ol>\n<p>I slut\u00e4ndan ger anv\u00e4ndningen <code>wp_remote_get<\/code>dig en hel del funktionalitet insvept i en l\u00e4ttanv\u00e4nd funktion.<\/p>\n<h2>Vissa PHP-resurser<\/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\">fst\u00e4ng<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Som man g\u00f6r n\u00e4r man bloggar, t\u00e4nkte jag att det skulle vara bra att dela med sig av ett enkelt exempel p\u00e5 hur man anv\u00e4nder wp_remote_get i ditt dagliga arbete.<\/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":[848,901,922,724,868],"tags":[1173],"class_list":["post-228381","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-oevrig","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=228381"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228381\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/168036"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=228381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=228381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=228381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}