{"id":228563,"date":"2022-10-23T17:31:00","date_gmt":"2022-10-23T14:31:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228563"},"modified":"2022-11-09T03:01:59","modified_gmt":"2022-11-09T00:01:59","slug":"solicitudes-remotas-con-wp_remote_get","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/solicitudes-remotas-con-wp_remote_get\/","title":{"rendered":"Solicitudes remotas con wp_remote_get"},"content":{"rendered":"\n<p>Si ha le\u00eddo alguna de mis publicaciones anteriores sobre la recuperaci\u00f3n de archivos remotos, entonces sabe que los viejos h\u00e1bitos mueren con dificultad, ya que a menudo uso <code>file_get_contents<\/code>en lugar de <code>wp_remote_get<\/code>.<\/p>\n<p>Entonces, como uno hace cuando escribe en un blog, pens\u00e9 que ser\u00eda \u00fatil compartir un ejemplo simple de c\u00f3mo usarlo <code>wp_remote_get<\/code>en su trabajo diario.<\/p>\n<p>La publicaci\u00f3n a continuaci\u00f3n es simplemente un fragmento de c\u00f3mo usarlo. Es decir, no mostrar\u00e1 c\u00f3mo dise\u00f1ar, digamos, una clase a su alrededor o una interfaz de usuario que permita a los usuarios cargar un archivo. Pero esto deber\u00eda ser suficiente para que las cosas comiencen.<\/p>\n<p>E incluir\u00e9 c\u00f3mo tomar la documentaci\u00f3n de la API y entender c\u00f3mo aprovecharla cuando se usa una funci\u00f3n como esta.<\/p>\n<h2>\u00bfPor qu\u00e9 usar wp_remote_get?<\/h2>\n<p>Aunque no siempre uso la API de WordPress (que suele ser porque, de nuevo, los viejos h\u00e1bitos se mantienen o porque desconozco una funci\u00f3n), lo intento.<\/p>\n<p>Y creo firmemente que si est\u00e1 trabajando en el entorno particular de una aplicaci\u00f3n y dicha aplicaci\u00f3n proporciona una API para algo, entonces debe usarla.<\/p>\n<h3>C\u00f3mo leer los documentos<\/h3>\n<p>Si est\u00e1 familiarizado con c\u00f3mo aprovechar la documentaci\u00f3n, puede omitir esta secci\u00f3n.<\/p>\n<p>Dicho esto, esto es lo que <code>wp_remote_get<\/code>dice la documentaci\u00f3n:<\/p>\n<blockquote>\n<p>Recupere la respuesta sin procesar de la solicitud HTTP utilizando el m\u00e9todo <strong>GET .<\/strong> Los resultados incluyen encabezados y contenido HTTP.<\/p>\n<\/blockquote>\n<p>Puede leer m\u00e1s en esta p\u00e1gina <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_remote_get\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">del Codex<\/a> y en esta p\u00e1gina de <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Recursos para desarrolladores<\/a>. Pero antes de usar la funci\u00f3n, es importante comprender qu\u00e9 acepta y qu\u00e9 devuelve.<\/p>\n<p>Y la funci\u00f3n acepta dos par\u00e1metros:<\/p>\n<ol>\n<li>la URL a la que se realiza la solicitud,<\/li>\n<li>el conjunto de argumentos requeridos para la solicitud (que est\u00e1 fuera del alcance de esta publicaci\u00f3n).<\/li>\n<\/ol>\n<p>Y wp_remote_get devuelve resultados mixtos seg\u00fan el resultado de la solicitud. Seg\u00fan los recursos del desarrollador:<\/p>\n<blockquote>\n<p>(WP_Error|array) La respuesta o WP_Error en caso de falla.<\/p>\n<\/blockquote>\n<p>En este punto, sabemos qu\u00e9 hace la funci\u00f3n, qu\u00e9 acepta y qu\u00e9 devuelve. As\u00ed que tenemos suficiente para seguir con respecto a la configuraci\u00f3n de un ejemplo simple.<\/p>\n<h3>Usando wp_remote_get<\/h3>\n<p>Con todo lo anterior en su lugar, aqu\u00ed hay un ejemplo simple de c\u00f3mo recuperar un archivo de una URL determinada. Supongo que la URL est\u00e1 en su servidor local (porque no quiero solicitar informaci\u00f3n de otros servidores en esta publicaci\u00f3n), raz\u00f3n por la cual el dominio es el TLD de 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\">Los comentarios deber\u00edan explicar qu\u00e9 pasa<\/a>, pero ofrecer\u00e9 algunas ideas m\u00e1s despu\u00e9s de eso.<\/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>Las cosas m\u00e1s importantes a tener en cuenta son las siguientes:<\/p>\n<ol>\n<li>Verifique los encabezados para asegurarse de que est\u00e9n configurados. De lo contrario, no hay necesidad de continuar con la captura del cuerpo del archivo.<\/li>\n<li>Si hay un error, entonces debemos manejarlo con gracia.<\/li>\n<li>Si todo lo dem\u00e1s funciona, entonces estamos listos para escribir el archivo en el disco. Estoy usando las funciones de archivo de PHP para hacer esto. Est\u00e1 un poco fuera del alcance de la publicaci\u00f3n, pero deber\u00eda ser f\u00e1cil de entender si estudia los enlaces a continuaci\u00f3n.<\/li>\n<\/ol>\n<p>En \u00faltima instancia, el uso <code>wp_remote_get<\/code>le brinda una gran cantidad de funciones envueltas en una funci\u00f3n f\u00e1cil de usar.<\/p>\n<h2>Algunos recursos de 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\">abierto<\/a><\/li>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.fwrite.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">escribir<\/a><\/li>\n<li><a href=\"https:\/\/php.net\/manual\/en\/function.fclose.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cerrar<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como se hace cuando se escribe un blog, pens\u00e9 que ser\u00eda \u00fatil compartir un ejemplo simple de c\u00f3mo usar wp_remote_get en su trabajo diario.<\/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":[892,716,914,840,861],"tags":[1172],"class_list":["post-228563","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-otro","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228563"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228563\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/168036"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}