{"id":228449,"date":"2022-10-23T17:24:00","date_gmt":"2022-10-23T14:24:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228449"},"modified":"2022-11-09T02:29:11","modified_gmt":"2022-11-08T23:29:11","slug":"zdalne-zadania-za-pomoca-wp_remote_get","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/zdalne-zadania-za-pomoca-wp_remote_get\/","title":{"rendered":"Zdalne \u017c\u0105dania za pomoc\u0105 wp_remote_get"},"content":{"rendered":"\n<p>Je\u015bli czyta\u0142e\u015b kt\u00f3rykolwiek z moich poprzednich post\u00f3w na temat pobierania zdalnych plik\u00f3w, to wiesz, \u017ce stare nawyki ci\u0119\u017cko umieraj\u0105, poniewa\u017c cz\u0119sto u\u017cywam <code>file_get_contents<\/code>zamiast <code>wp_remote_get<\/code>.<\/p>\n<p>Tak jak robi si\u0119 to podczas blogowania, pomy\u015bla\u0142em, \u017ce pomocne b\u0119dzie udost\u0119pnienie prostego przyk\u0142adu wykorzystania <code>wp_remote_get<\/code>w codziennej pracy.<\/p>\n<p>Poni\u017cszy post to tylko fragment, jak z niego korzysta\u0107. Oznacza to, \u017ce nie poka\u017ce, jak zaprojektowa\u0107, powiedzmy, klas\u0119 wok\u00f3\u0142 niego ani interfejs u\u017cytkownika, kt\u00f3ry pozwala u\u017cytkownikom przes\u0142a\u0107 plik. Ale to powinno wystarczy\u0107, aby zacz\u0105\u0107.<\/p>\n<p>I opisz\u0119, jak wzi\u0105\u0107 dokumentacj\u0119 API i zrozumie\u0107, jak j\u0105 wykorzysta\u0107 podczas korzystania z takiej funkcji.<\/p>\n<h2>Dlaczego warto korzysta\u0107 z wp_remote_get?<\/h2>\n<p>Chocia\u017c nie zawsze u\u017cywam interfejsu API WordPressa (co zwykle wynika z tego, \u017ce przenosz\u0105 si\u0119 stare nawyki lub dlatego, \u017ce nie jestem \u015bwiadomy jakiej\u015b funkcji), pr\u00f3buj\u0119.<\/p>\n<p>I mocno wierz\u0119, \u017ce je\u015bli pracujesz w konkretnym \u015brodowisku aplikacji i wspomniana aplikacja dostarcza do czego\u015b API, powiniene\u015b go u\u017cy\u0107.<\/p>\n<h3>Jak czyta\u0107 dokumenty<\/h3>\n<p>Je\u015bli wiesz, jak korzysta\u0107 z dokumentacji, mo\u017cesz pomin\u0105\u0107 t\u0119 sekcj\u0119.<\/p>\n<p>Maj\u0105c to na uwadze, oto, co <code>wp_remote_get<\/code>m\u00f3wi dokumentacja:<\/p>\n<blockquote>\n<p>Pobierz surow\u0105 odpowied\u017a z \u017c\u0105dania HTTP za pomoc\u0105 metody <strong>GET<\/strong>. Wyniki obejmuj\u0105 nag\u0142\u00f3wki i tre\u015b\u0107 HTTP.<\/p>\n<\/blockquote>\n<p>Mo\u017cesz przeczyta\u0107 wi\u0119cej zar\u00f3wno na tej stronie <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_remote_get\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">w Kodeksie<\/a>, jak i na tej stronie w <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Zasobach dla programist\u00f3w<\/a>. Ale przed faktycznym u\u017cyciem funkcji wa\u017cne jest, aby zrozumie\u0107, co akceptuje i co zwraca.<\/p>\n<p>A funkcja przyjmuje dwa parametry:<\/p>\n<ol>\n<li>adres URL, na kt\u00f3ry kierowane jest \u017c\u0105danie,<\/li>\n<li>zestaw argument\u00f3w wymaganych dla \u017c\u0105dania (kt\u00f3ry jest poza zakresem tego posta).<\/li>\n<\/ol>\n<p>A wp_remote_get zwraca mieszane wyniki na podstawie wyniku \u017c\u0105dania. Zgodnie z zasobami dla programist\u00f3w:<\/p>\n<blockquote>\n<p>(WP_Error|array) Odpowied\u017a lub WP_Error w przypadku niepowodzenia.<\/p>\n<\/blockquote>\n<p>W tym momencie wiemy, co funkcja robi, co akceptuje i co zwraca. Mamy wi\u0119c wystarczaj\u0105co du\u017co do zrobienia, je\u015bli chodzi o stworzenie prostego przyk\u0142adu.<\/p>\n<h3>Korzystanie z wp_remote_get<\/h3>\n<p>Maj\u0105c wszystkie powy\u017csze informacje, oto prosty przyk\u0142ad, jak pobra\u0107 plik z podanego adresu URL. Zak\u0142adam, \u017ce adres URL znajduje si\u0119 na twoim lokalnym serwerze (poniewa\u017c nie chc\u0119 w tym po\u015bcie prosi\u0107 o informacje z innych serwer\u00f3w), dlatego domena jest domen\u0105 TLD kropki-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\">Komentarze powinny wyja\u015bnia\u0107, o co chodzi<\/a>, ale po tym przedstawi\u0119 kilka dalszych przemy\u015ble\u0144.<\/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>Najwa\u017cniejsze informacje s\u0105 nast\u0119puj\u0105ce:<\/p>\n<ol>\n<li>Sprawd\u017a nag\u0142\u00f3wki, aby upewni\u0107 si\u0119, \u017ce s\u0105 ustawione. Je\u015bli nie, nie ma potrzeby pobierania tre\u015bci pliku.<\/li>\n<li>Je\u015bli pojawi si\u0119 b\u0142\u0105d, musimy poradzi\u0107 sobie z tym z wdzi\u0119kiem.<\/li>\n<li>Je\u015bli wszystko inne si\u0119 sprawdzi, jeste\u015bmy gotowi do zapisania pliku na dysku. Aby to zrobi\u0107, u\u017cywam funkcji plik\u00f3w PHP. Jest to troch\u0119 poza zakresem postu, ale powinno by\u0107 \u0142atwe do zrozumienia, je\u015bli przestudiujesz poni\u017csze linki.<\/li>\n<\/ol>\n<p>Ostatecznie, u\u017cywanie <code>wp_remote_get<\/code>zapewnia wiele funkcji zawartych w \u0142atwej w u\u017cyciu funkcji.<\/p>\n<h2>Niekt\u00f3re zasoby 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\">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\">fzamknij<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tak jak robi si\u0119 to podczas blogowania, pomy\u015bla\u0142em, \u017ce pomocne b\u0119dzie udost\u0119pnienie prostego przyk\u0142adu korzystania z wp_remote_get w codziennej pracy.<\/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":[721,919,897,845,866],"tags":[1169],"class_list":["post-228449","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-kod","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=228449"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228449\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/168036"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=228449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=228449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=228449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}