{"id":3248,"date":"2023-03-04T10:41:53","date_gmt":"2023-03-04T09:41:53","guid":{"rendered":"https:\/\/davidperezgar.com\/?p=3248"},"modified":"2023-04-23T13:19:26","modified_gmt":"2023-04-23T11:19:26","slug":"conecta-con-apis-desde-wordpress-de-forma-sencilla","status":"publish","type":"post","link":"https:\/\/davidperezgar.com\/es\/conecta-con-apis-desde-wordpress-de-forma-sencilla\/","title":{"rendered":"Conecta con APIs desde WordPress de forma Sencilla"},"content":{"rendered":"\n<figure class=\"wp-block-embed is-type-video is-provider-wordpress-tv wp-block-embed-wordpress-tv wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"VideoPress Video Player\" aria-label=\"VideoPress Video Player\" width=\"500\" height=\"281\" src=\"https:\/\/video.wordpress.com\/embed\/IpI0vsL7?hd=1&amp;cover=1\" frameborder=\"0\" allowfullscreen allow=\"clipboard-write; presentation\"><\/iframe><script src='https:\/\/v0.wordpress.com\/js\/next\/videopress-iframe.js?m=1790791280'><\/script>\n<\/div><\/figure>\n\n\n\n\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">&lt;?php\n\/**\n * Plugin Name: Profile WordPress.org\n * Plugin URI:  https:\/\/close.technology\n * Description: Shows your WordPress.org Profile.\n * Version:     1.0.0\n * Author:      David Perez\n * Author URI:  https:\/\/close.technology\n * Text Domain: wporg-profile\n * Domain Path: \/languages\n * License:     GPL-2.0+\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-2.0.txt\n *\n * @package     WordPress\n * @author      David Perez\n * @copyright   2023 Closemarketing\n * @license     GPL-2.0+\n *\n * @wordpress-plugin\n *\n * Prefix:      wporg-profile\n *\/\n\ndefined( 'ABSPATH' ) || die( 'No script kiddies please!' );\n\ndefine( 'PROFWP_VERSION', '1.0.0' );\ndefine( 'PROFWP_PLUGIN', __FILE__ );\ndefine( 'PROFWP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );\ndefine( 'PROFWP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );\ndefine( 'PROFWP_API_BASE', 'https:\/\/wordpress.org\/wp-json\/wporg\/v1\/users\/' );\n\n\nadd_action( 'plugins_loaded', 'profwp_plugin_init' );\n\/**\n * Load localization files\n *\n * @return void\n *\/\nfunction profwp_plugin_init() {\n\tload_plugin_textdomain( 'wporg-profile', false, dirname( plugin_basename( __FILE__ ) ) . '\/languages' );\n}\n\n\nadd_shortcode( 'wp_profile', 'show_widget_profile' );\n\nfunction show_widget_profile( $atts ) {\n\n\t$atts = shortcode_atts(\n\t\tarray(\n\t\t\t'user' =&gt; 'davidperez',\n\t\t),\n\t\t$atts\n\t);\n\n\t$response = wp_remote_get( PROFWP_API_BASE . $atts['user'] . '\/' );\n\t$html     = '';\n\tif ( isset( $response['response']['code'] ) &amp;&amp; 200 === $response['response']['code'] ) {\n\t\t$body    = wp_remote_retrieve_body( $response );\n\t\t$profile = json_decode( $body, true );\n\n\t\t$html .= '&lt;style&gt;\n\t\t\t.wporg-profile {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 300px;\n\t\t\t}\n\t\t&lt;\/style&gt;';\n\t\t$html .= '&lt;div class=\"wporg-profile\"&gt;';\n\t\tif ( ! empty( $profile['avatar_urls'] ) &amp;&amp; isset( $profile['avatar_urls']['96'] ) &amp;&amp; isset( $profile['name'] ) ) {\n\t\t\t$html .= '&lt;div class=\"wporg-profile-avatar\"&gt;';\n\t\t\t$html .= '&lt;img src=\"' . esc_url( $profile['avatar_urls']['96'] ) . '\" alt=\"' . esc_html( $profile['name'] ) . '\"&gt;';\n\t\t\t$html .= '&lt;\/div&gt;';\n\t\t}\n\t\tif ( ! empty( $profile['name'] ) ) {\n\t\t\t$html .= '&lt;div class=\"wporg-profile-name\"&gt;';\n\t\t\t$html .= '&lt;a href=\"' . esc_url( $profile['link'] ) . '\"&gt;' . esc_html( $profile['name'] ) . '&lt;\/a&gt;';\n\t\t\t$html .= '&lt;\/div&gt;';\n\t\t}\n\n\t\tif ( ! empty( $profile['description'] ) ) {\n\t\t\t$html .= '&lt;div class=\"wporg-profile-description\"&gt;';\n\t\t\t$html .= '&lt;p&gt;' . esc_html( $profile['description'] ) . '&lt;\/p&gt;';\n\t\t\t$html .= '&lt;\/div&gt;';\n\t\t}\n\t\t$html .= '&lt;\/div&gt;';\n\n\t\treturn $html;\n\t}\n\n\treturn $html;\n\n}\n<\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/docs.google.com\/presentation\/d\/1Na4ba4r_BTVJCjJnOhg8gwfXhbYlA2s6NN6lI0Gc4f0\/present\" target=\"_blank\" rel=\"noopener\">Ver diapositivas<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Transcripci\u00f3n del video<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Buenas, \u00e9l es David P\u00e9rez, para que nos conozcan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Viene de la comunidad de Granada y b\u00e1sicamente es un crack, o sea, no hace falta ni presentarlo ni decir nada m\u00e1s, es que.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">es un crack, un aplauso, \u00bfno?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(Aplausos) Bueno, vamos a empezar un taller.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo quiero que sea muy pr\u00e1ctico, a m\u00ed, los que me conoc\u00e9is, me gustan cosas muy pr\u00e1cticas, aunque sean cuatro cosillas, y aprovechar, preguntar, parar, interrumpir, todo, para que vayamos sentando un poquito los conceptos, que son muy sencillitos, y porque cada vez m\u00e1s es una necesidad imperiosa de tener nuestros WordPress conectados conectados a distintos sistemas, RPS, CRM, backend, cosas para avanzar yo soy un claro defensor de WordPress, todas las p\u00e1ginas web le hago un WordPress, 100% pero cuando tengo que trabajar con entornos de desarrollo, de administraci\u00f3n, de tal eso s\u00ed, verdad que ya no me lo llevo a WordPress, porque WordPress no est\u00e1 pensado tampoco para hacer, por ejemplo, backend de producci\u00f3n, me refiero a por ejemplo que haga gestionar un taller o una f\u00e1brica, por todo eso WordPress no est\u00e1 pensado para eso, si est\u00e1 pensado para ser la parte visible de esa empresa que si necesita alguna informaci\u00f3n de ese aplicativo, para eso est\u00e1 el API, que es lo que vamos a ense\u00f1ar Entonces, cada uno a su terreno, Warprey es nuestro mejor acompa\u00f1ante para el tema de la polic\u00eda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bueno, yo me presento muy r\u00e1pido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo soy cofundador de la agencia <a href=\"https:\/\/close.marketing\/\" target=\"_blank\" rel=\"noopener\">Closemarketing<\/a>, que tambi\u00e9n tenemos una pata tecnol\u00f3gica, <a href=\"https:\/\/close.technology\/\" target=\"_blank\" rel=\"noopener\">Closetechnology<\/a>, que ah\u00ed tambi\u00e9n mandamos plugin y hacemos un poco de todo con WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Soy CTO, con lo cual llevo la parte t\u00e9cnica de la empresa y intento siempre llevar un poquito por delante a mi equipo para sacar los nuevos retos que hay de tecnol\u00f3gicos, todos los a\u00f1os siempre hay cosas nuevas y bueno, tambi\u00e9n estoy muy involucrado como hab\u00e9is en la comunidad fui l\u00edder en la World Cup en Granada, estoy de organizaci\u00f3n de la World Cup en Europa est\u00e1 muy chulo este a\u00f1o en Atenas, os animo a que os vay\u00e1is del 9 al 13 de junio y es esto pero multiplicado por 10, pero cualquier World Cup entonces ya el a\u00f1o pasado fuimos a Porto y este a\u00f1o vamos a Atenas y est\u00e1 muy bien y entre mi tiempo que me queda pues soy director de una carrera deportiva que le hice por mi padre tambi\u00e9n me meto ah\u00ed en temas de colaborativos y cogemos fondos para darlo a una a una entidad no lucrativa y tambi\u00e9n me meto en Mita tambi\u00e9n me met\u00ed en la Work and Granada de este a\u00f1o as\u00ed que an\u00edmo el 2 y 3 de octubre y ah\u00ed ah\u00ed muy bien y me pod\u00e9is ver por twitter en @davisperospcmk ahora me met\u00ed tambi\u00e9n en Mastodon tambi\u00e9n hay que meterse en todo y bueno, en mi perfil y en la p\u00e1gina web personal ten\u00e9is todo, \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">de hecho la dispositiva la tend\u00e9is ah\u00ed, \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bueno, pues vamos un poquito a hablar de lo que es una API eh.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfqu\u00e9 es una API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">una API es una forma de conectar eh.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bueno, se llama.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">en s\u00ed es Application Programming Interface y es una serie de reglas y protocolos para poder interactuar con sistemas que t\u00fa no conoces que hay dentro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">T\u00fa no sabes c\u00f3mo est\u00e1 hecho, ni tampoco te importa y lo que te interesa es conectarte, sacar informaci\u00f3n, sacar lectura, escritura, puedes tambi\u00e9n escribir, puedes actualizar informaci\u00f3n y a partir de ah\u00ed utilizas la regla de protocolos que te define el sistema en que t\u00fa te conectas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si nos conectamos, por decir algo, a un CRM, pues yo tengo que ver la documentaci\u00f3n, ver c\u00f3mo puedo conectar, que puedo interactuar y puedo hacer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hacemos esa interacci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Normalmente, no siempre, pero bueno, se hace a trav\u00e9s de formato estructurado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El mejor es JSON.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JSON es un lenguaje que est\u00e1 muy bien estructurado a las variables y es muy f\u00e1cil de trabajarlo en WordPress porque tenemos una funci\u00f3n que es \"UVP JSON Encode\" y cuando nos viene JSON, lo podemos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\"UVP\" o sea, JSON Decode hay unas funciones que t\u00fa puedes codificar y descodificarlas y tambi\u00e9n est\u00e1 el XML, que ya nos podemos encontrar a PIC con XML y cuando nos encontramos con XML, pues ya estamos diciendo \"vaya, me he encontrado, este es un sistema m\u00e1s antiguo\" PHP no lo gestiona igual, m\u00e1s rollo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En la API normalmente ya trabajan eso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hay un tipo de autenticaci\u00f3n, estamos leyendo datos sensibles y normalmente hay varios tipos de autenticaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces lo ideal es que tenga autenticaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando es un sistema p\u00fablico, que la pr\u00e1ctica que vamos a hacer no hace falta ning\u00fan tipo de autenticaci\u00f3n pues nada perfecto pues directamente la url leemos la informaci\u00f3n y tiramos millas y claro quien ha popularizado mucho la API pues las aplicaciones m\u00f3viles y gracias a la aplicaci\u00f3n m\u00f3vil nos encontramos muchos aplicativos que tienen API porque claro para tener la aplicaci\u00f3n m\u00f3vil ahora ya no porque ahora ya tambi\u00e9n puede incluso programar la aplicativo con lo mismo que la aplicaci\u00f3n m\u00f3vil, bueno, pero normalmente suele ser diferente programaci\u00f3n, cuando t\u00fa haces una aplicaci\u00f3n m\u00f3vil, el de m\u00f3vil le pide al aplicativo \"oye, mira, dame que yo pueda interactuar y leer con los usuarios\" entonces lo que es lo que lo que hace normalmente, que es lo m\u00e1s habitual, es hacer un programa una API, d\u00e1sela al equipo de m\u00f3vil y m\u00f3vil se interact\u00faa con el aplicativo, por ejemplo, yo que s\u00e9, un RP, un CRM, tienen aplicaciones m\u00f3viles hoy d\u00eda, pues todos lo hacen a trav\u00e9s de API Otros ejemplos de API muy conocidos es el propio WordPress, tiene much\u00edsima API y se hizo mucho m\u00e1s popular con el nuevo editor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El editor de Gutenberg, los que saben, el nuevo editor que tiene WordPress trabaja con React, que es un entorno de programaci\u00f3n y para conectarse, o sea, estando incluso en el mismo administrador para conectarse a WordPress y sacar datos del contenido de todo lo hace a trav\u00e9s de API entonces gracias a eso pues la API tambi\u00e9n de WordPress tuvieron que la gente de PHP que se usan en m\u00e1s backend pues tuvieron que crear toda la programaci\u00f3n para poder interactuar el editor con esto con la base de datos de WordPress Cuando yo tengo muchos proyectos con API, lo primero que le digo al aplicativo al que me quiero conectar \"Por favor, darme documentaci\u00f3n, si no no puedo conectar, \u00bfc\u00f3mo me puedo conectar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">, \u00bfqu\u00e9 autotica tengo que utilizar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">, \u00bfqu\u00e9 datos puedo leer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">, \u00bfqu\u00e9 puedo escribir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">, todo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y ah\u00ed te encuentras, bueno, los m\u00e1s grandes unos te mandan un PDF, otros te mandan el resumen, el resumen est\u00e1 muy bien porque te permite incluso interactuar sin haber programado nada con la propia API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces est\u00e1 muy bien porque le metes la autenticaci\u00f3n de lo que pida esa API y puede interactuar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces pues bueno y aqu\u00ed yo pon\u00eda algunos ejemplos de cosas que me gustan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces por ejemplo, Holder, no s\u00e9 si se la conoc\u00e9is.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfConoc\u00e9is algunos Holders.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues Holder es un RP muy conocido porque.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uy no, esta es mi de developers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javascript, perfecto, me faltaba una \"s\" y este casi todos si os dais cuenta est\u00e1n hechos casi igual, os voy a poner dos que no tienen nada que ver una con otra y ver\u00e9is que tiene developers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javascript \u00bfVes que se parecen, se parecen, tienen m\u00e1s o menos la estructura y es que esto Postman, que ahora os contar\u00e9 un poco las aplicaciones para borrar la API, te dan la parte gratuita para los que nosotros desarrollamos y la parte de entorno de documentaci\u00f3n la dan con Postman.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces ah\u00ed le cobran a los clientes, a los que tienen la API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces aqu\u00ed, por ejemplo, con Holders, pues aqu\u00ed vemos todas las entidades, c\u00f3mo nos podemos conectar las dedicaciones, como todas las entidades, puedes conectarte con los contactos, con los productos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es un RP, puedes generar productos, almacenes, los impuestos, la contabilidad de tesorer\u00eda, aqu\u00ed montos los pagos, los documentos, aqu\u00ed con esto puedes generar una factura, por API yo puedo generar una factura en el RP oficial, puedo recoger el PDF y mandar a los clientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Seg\u00fan el aplicativo, pues entonces pues bueno aqu\u00ed por ejemplo me dice bienvenidos a la API, digo perfecto, venga vamos a lo siguiente, la API, ahora voy a contar un poquito los tipos de autenticaci\u00f3n, pues esta es la URL que t\u00fa tienes que trabajar, bueno esta es para conseguir la autenticaci\u00f3n y a partir de aqu\u00ed ya empezamos a trabajar, pues mira si quieres listar contactos tienes que utilizar el m\u00e9todo Get, ahora os voy a explicar lo que es con este URL, incluso aqu\u00ed te viene si le pones una API key puedes intentarlo, incluso te permite generar el c\u00f3digo, incluso aqu\u00ed tienes para sacarlo con PHP, que ahora voy a decir que esto no no us\u00e9is esto, vamos a utilizar lo que que da Warp es que est\u00e1 muy muy bien y es mucho m\u00e1s sencillo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed te dice que instales una librer\u00eda y que a partir de cojas una clase y haga un m\u00e9todo get eso ya no hace falta en Warp, ahora explicar\u00e9 por qu\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues podemos crear un contacto, aqu\u00ed se puede hacer de todo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, la documentaci\u00f3n, important\u00edsima.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de poder conectarlo, dame tu documentaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Normalmente los software, casi todos tienen una API, no s\u00e9 si se me ocurre, y todos tienen tambi\u00e9n incluso una secci\u00f3n para desarrolladores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">por ejemplo Spotify por ejemplo, \u00bfyo puedo interactuar con Spotify.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pues s\u00ed perfectamente si ponemos Spotify, developer, aqu\u00ed tiene una parte de developer, casi siempre se utiliza developer, developers y aqu\u00ed te dice para que t\u00fa interact\u00faes con Spotify.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por normal general los sistemas los software en la nube tienen API casi siempre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De hecho yo a los clientes cuando me van a contratar una herramienta de cualquier tipo le digo si despu\u00e9s nosotros vamos a utilizarlo para la web que tenga API, es el requisito que funciona a ti pero que tenga API porque la API luego ya te permite interactuar con ella, hay software que se han quedado antiguos y no est\u00e1n en la nube o si est\u00e1n en la nube y no la han hecho, te pueden encontrar sorpresas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hay herramientas que me mandan un CSV en una carpeta FTP, eso no, eso es un desastre, porque tienes que leer CSV, no leer siempre, un desastre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces lo mejor es tener una API que t\u00fa puedas interactuar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando vosotros tambi\u00e9n hay que interactuar con ese sistema, pedir siempre la documentaci\u00f3n, la documentaci\u00f3n, c\u00f3mo puedo autenticar, c\u00f3mo pueden interactuar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y una vez que tenemos esa autenticaci\u00f3n, pues tenemos que hacer pruebas antes de empezar a programar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo que tenemos que ver es la entidad, qu\u00e9 tipo de informaci\u00f3n nos facilita, c\u00f3mo la puedo procesar y todo esto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, pues hay muchos clientes de lectura de API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de seguir un poquito, quiero conocer un poco, a ver qui\u00e9nes son los desarrolladores, \u00bfhab\u00e9is programado alguna vez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfTodos son desarrolladores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfPor aqu\u00ed no.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed m\u00e1s o menos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Perfecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfY ten\u00e9is el tono de desarrollo local.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfSab\u00e9is trabajar con el desarrollo local.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Perfecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues dentro del local local, t\u00fa te puedes instalar una aplicaci\u00f3n que se llama Pongman, yo es la que utilizo, es gratuita, te la bajas, te la descargas y tambi\u00e9n incluso si utiliz\u00e1is Visual Code, el editor de Visual, tiene tambi\u00e9n extensiones como ResClient, hab\u00eda otro que era Octopus, hay un mont\u00f3n, o sea que realmente este me parece que es Octopus, realmente que utilic\u00e9is el que quer\u00e1is, que sea m\u00e1s c\u00f3modo, probarlo y como son extensiones de VisorCo, por ejemplo, que te la puedes borrar, pues nada, sin problema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo empec\u00e9 con Pongman y ya me he quedado porque traerme todo, ahora ver\u00e9is mi carpeta de Pongman, que tengo el m\u00e1s grande, traerme toda esa informaci\u00f3n a reprogramarlo porque simplemente este tema integrado no me merece la pena.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo trabajo con Pongman, tiene una interfaz sencilla, aqu\u00ed tenemos lo que son como como carpeta, aqu\u00ed como veis tengo aqu\u00ed unas cuantas integraciones hechas y aqu\u00ed tengo una que se llama WordPress, yo incluso puedo tener otro WordPress y puedo interactuar con el mismo WordPress y aqu\u00ed de hecho he hecho un ejemplo en el que yo aqu\u00ed pongo la URL, ahora vamos a ver qu\u00e9 significa la cosa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y con la autenticaci\u00f3n, porque claro yo no puedo leer productos, depende de c\u00f3mo tengas configurada WordPress, pero yo lo de aqu\u00ed a send y simulo una petici\u00f3n API en tiempo real y me est\u00e1 dando una informaci\u00f3n real.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed como veis tengo software de VoIP, de todo un poco.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces yo puedo interactuar y recoger esta informaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed por ejemplo me est\u00e1 dando una petici\u00f3n, le echo yo de productos y como no le he especificado nada me da todas las productos y aqu\u00ed pues sacar\u00e1 lo m\u00e1s grande.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto tambi\u00e9n hay que trabajar la paginaci\u00f3n, normalmente el API no te manda toda la base de datos de las p\u00e1ginas entonces t\u00fa lo que haces es un recurrente y va haciendo la paginaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed como veis me da un ID, el 1904 con una fecha, aqu\u00ed ya est\u00e1s viendo en este interfaz ya est\u00e1s viendo c\u00f3mo te da la fecha y ya partir\u00eda la manipulaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La fecha a m\u00ed me gusta guardarla en num\u00e9rico pero si me la dan as\u00ed pues yo la normalmente la trato y la paso a SDRTutime le digo p\u00e1samela en num\u00e9rico y ya la puedo trabajar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed te dice cu\u00e1ndo fue la modificaci\u00f3n, el SLU, de esto es una entrada de un producto de Clos Technology.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed me sale incluso el link, el contenido, fijaros aqu\u00ed est\u00e1 el contenido metido, nos lo da el renderizado, que pone aqu\u00ed renderer, y bueno incluso escapeado, si veis aqu\u00ed las comillas se llama un escapeado, eso cuando lo decodificamos, nosotros para trabajar en PHP, los JSON no podemos trabajarlo porque es un string, entonces lo que hacemos es que este JSON lo convertimos en un array y ya al array si podemos hacer un recurrente, vamos trabajando y vamos cogiendo las entidades.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero bueno, ya est\u00e1s viendo aqu\u00ed c\u00f3mo est\u00e1 estructurado y aqu\u00ed est\u00e1s viendo que hay dos niveles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo tendr\u00eda que hacer el array y el std y luego a partir de ah\u00ed tendr\u00eda que coger, esto me lo convirtiera en un array de doble nivel, entonces yo cojo este y este para poder coger esta informaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces ah\u00ed estoy viendo los niveles tambi\u00e9n del JSON.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces lo normal para cuando coges una API, primero ver la documentaci\u00f3n, met\u00e9rtela en el postman y empezar a ver la documentaci\u00f3n y hacer una simulaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le hace una petici\u00f3n, le mete la autenticaci\u00f3n y le da enviar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora vamos a ver que hay distintas peticiones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas son las peticiones que puede hacer la API y aqu\u00ed el GET es recoger, dame los productos que tiene la tienda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, si yo tengo una aplicaci\u00f3n m\u00f3vil que quiere conectarse a mi tienda, pues nada, pues yo har\u00eda esta petici\u00f3n para poder escoger los productos y se\u00f1al\u00e1rselos al cliente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Evidentemente, si es una tienda online y tengo el m\u00f3vil, por lo mejor no me interesa sacar todo el contenido con la imagen destacada que estar\u00e1 por aqu\u00ed tambi\u00e9n, que a veces se llama \"featured\", mira, \"featured media\" y me la da por ID.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed, por ejemplo, estamos viendo que yo tendr\u00e9 que hacer una segunda petici\u00f3n API con el ID de la imagen para poder coger esa imagen vale y ya cogiendo la imagen seguramente creo recordar de cabeza me da las distintas recortes que tengo yo en WordPress definido entonces con esos recortes voy a coger y lo que har\u00e9 en WordPress es decir voy a hacer un recorte para el m\u00f3vil y lo recojo por API y lo ense\u00f1o, vale entonces al final con podman que yo el que utilizo interact\u00fao veo lo configuro incluso aqu\u00ed os da un c\u00f3digo vale toda la herramienta viene con el c\u00f3digo pero ya digo que no que no que no es \u00fatil en el sentido aqu\u00ed por ejemplo le da un c\u00far y si lo pongo es que como no lo hizo nunca ahora aqu\u00ed pues puedo decirle pues dame PHP, PHP concur, fijaros todo lo que me manda de.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pues esto en WordPress son tres l\u00edneas, si te ahorras todo esto que es PHP nativo, o sea esto funciona en PHP nativo pero si t\u00fa mandas el plugin a WordPress ver\u00e9is que no te lo aceptan, tienes que utilizar las peticiones nativas Entonces, tengo documentaci\u00f3n, tengo el cliente para interactuar y recojo informaci\u00f3n, veo c\u00f3mo me trae la informaci\u00f3n y ya la trabajo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas herramientas son fundamentales para poder ver qu\u00e9 te da la API antes de empezar a hacer nada de programaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Muchas veces te dan una documentaci\u00f3n, no est\u00e1 actualizada y antes de empezar a programar tienes que probarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">prueba y dice \"Ostras, pues no me ha dado. oye, pues mira, la antetecaci\u00f3n que me dices pues no funciona no me sirve, pues ya empezaba a hablar con el proveedor y ya va cogiendo\" Vale, tipo de peticiones que tengo en API, entonces como hemos visto son protocolos y yo ahora puedo hacer varias peticiones tengo cinco en total pero no son, o sea, no todas las APIs tienen todas, lo normal es la GET y la POST, las normales hay veces que solo tiene la get, la get es como la fundamental sino no tiene api porque es la lectura y entonces aqu\u00ed tenemos una serie de peticiones que los propios nombres m\u00e1s o menos son descriptivos get recojo informaci\u00f3n, leo, entonces yo hago peticiones get para leer informaci\u00f3n como hab\u00e9is visto por una tienda leen los productos, las im\u00e1genes destacadas, todas las peticiones Put, \u00bfqu\u00e9 es Put.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es actualizar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si yo recojo un.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">si hago otra vez el ejemplo de la tienda m\u00f3vil de mi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">de esa tienda de aplicaci\u00f3n m\u00f3vil.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo hago un get de productos y le he puesto un administrador aqu\u00ed para que pueda cambiar la informaci\u00f3n del producto y ya tengo un ID, \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El Put con un ID normalmente actualiza la informaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo la que cambio, pues voy a cambiar el t\u00edtulo, lo voy a guardar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo que hace es, le hace una petici\u00f3n Put con un ID, normalmente todo eso va en la documentaci\u00f3n y le meto la informaci\u00f3n que yo quiero actualizar \u00bfPor qu\u00e9 digo que este no es del todo habitual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">porque normalmente muchas veces se hace con el post, el post es enviar, es como crear un nuevo contacto, por ejemplo en el ejemplo del RP puedo crear un contacto con un post pero muchas veces tambi\u00e9n si le doy una id en esa petici\u00f3n hace como si fuera un put, entonces ya depende de la argumentaci\u00f3n pues la encontraremos si tiene post y get o tambi\u00e9n te pone put, para ser m\u00e1s estricto es mejor put porque as\u00ed te est\u00e1 diciendo que esto es una actualizaci\u00f3n, lo est\u00e1s como forzando, o sea que si t\u00fa no le metes una idea al put pues te va a dar error, en cambio si t\u00fa no le ponen idea en post te va a crear uno nuevo, una nueva cantidad, lo que sea, un contacto, un producto, etc\u00e9tera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, ya digo, depende del API, como hayan programado, los m\u00e1s exactivos y m\u00e1s tal, pues te suelen poner una petici\u00f3n puro, para actualizar el contacto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00e1s cosillas, el POST, pues creo contactos, actualizo, depende del API, luego del ET, que este lo utilizo muy poco, no me gusta eliminar datos de una aplicaci\u00f3n externa salvo que sea necesidad del proyecto porque puedes tener un forage y te equivocas y empezar a mandarle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Normalmente el delete si t\u00fa le das una ID como el put, pues elimina la entidad que t\u00fa le digas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Normalmente tendr\u00e1s que especificar la entidad que quieras modificar, por ejemplo un contacto y un ID.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces t\u00fa le dices esas dos cosas y te ahorra la entidad en el aplicativo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y patch es tambi\u00e9n, dependiendo de las peticiones, el actualizar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues hemos visto la funci\u00f3n, como veis, que es bastante suboptiva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta es de un CRM, se llama Clientify, y aqu\u00ed le estamos pediendo un GET de toda esta informaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">y aqu\u00ed incluso tengo la actualizaci\u00f3n, un toque, \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No lo vich\u00e9is porque no existe, no es real Vale, entonces yo le estoy haciendo una petici\u00f3n GET de este toque, y entonces \u00bfqu\u00e9 pasa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">que me va a dar aqu\u00ed un resultado, response, que yo aqu\u00ed ya lo podr\u00e9 trabajar, \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, vale, aqu\u00ed como veis, me genera ese c\u00f3digo, podman, rest client o cualquiera, no cumple los WordPress Coding Standard no s\u00e9 si conoc\u00e9is algunos lo que son los WordPress Coding Standard, aqu\u00ed dice si, asienten, no, si, si vale, WordPress Coding Standard que quiere decir, es una sintaxis que nos define, bueno, un compendio de reglas que gente muy buena pues la ha definido y as\u00ed nos dice para tener mismo estilo a la hora de programa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfPor qu\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Porque por varios motivos, por seguridad, por leer el c\u00f3digo de una persona y que lo pueda leer de una forma normal y entonces todas esas reglas te las puedes instalar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo lo animo a que invest\u00eds un poquito m\u00e1s en mi blog o como yo documento c\u00f3mo lo hago y lo pongo en mi blog.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si lo busc\u00e1is en Coding Standard os digo c\u00f3mo lo instalo en mi ordenador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">lo meto en el editor y me va diciendo como si fuera un corrector de autogr\u00e1fico que t\u00fa vas cambiando lo que son las definiciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces me va definiendo esto y cuando yo le meto el CUR me dice que no, que no se permite utilizar reglas CUR para interactuar con la API desde WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Que si t\u00fa lo pones y sigues hacia adelante no pasa nada, pero si t\u00fa ese plan que t\u00fa has hecho lo mandas al repositorio de WordProficial te lo van a banear, bueno no te lo banean, te responden, te dan una serie de reglas que no definen el c\u00f3digo est\u00e1ndar y te hace que lo tengas que arreglar, entonces como no hemos hecho las cosas bien desde el principio y ahorraron el trabajo de hacerlo de una forma y despu\u00e9s que te la devuelvan, pues vamos a trabajar con c\u00f3digo est\u00e1ndar y aqu\u00ed vais a aprender directamente, entonces por eso yo dec\u00eda que el Postman cuando me da un c\u00f3digo no lo veo, yo veo la dedicaci\u00f3n, veo que funciona el API y ya me pongo yo a programar y de una forma muy sencilla que os voy a ense\u00f1ar y luego en el ejercicio lo vamos a ir viendo para que vosotros pod\u00e1is programarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tenemos unas funciones definidas en WordPress, hab\u00e9is visto que ten\u00edamos cinco peticiones tipo de API pero no hay funciones para cada una de las porque no s\u00e9, la verdad, pero tenemos esta siguiente, tenemos \"wp-remote-request\" que dec\u00eds bueno, el \"request\" no, no hab\u00eda dicho tu petici\u00f3n de API, no, esta es la gen\u00e9rica, que dentro del argumento, y os voy a ense\u00f1ar el argumento, le podemos decir qu\u00e9 tipo de petici\u00f3n, si es \"get, put, pull\" o \"sapatch\" o \"post\" o \"delete\" o lo que quer\u00e1is, entonces los argumentos se los ponemos con lo cual muchas veces con uno solo es suficiente, con el \"upremoteRequest\" entonces yo lo que hago es que me hago una funci\u00f3n, le llamo API y cualquier cosa y entonces en esa funci\u00f3n dentro va el \"upremoteRequest\" y en la funci\u00f3n le digo el par\u00e1metro que quiero utilizar si es \"get\", \"spot\" y etc\u00e9tera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero hay veces que en la programaci\u00f3n, si simplemente necesito el \"get\" porque es una app p\u00fablica que podemos utilizar, vperremote.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">get que los argumentos son m\u00e1s sencillos porque no hace falta poner el m\u00e9todo en este s\u00ed tienes que meterlo, en este no, porque ya se asume que es un get y con el get, con la url te trae los distintos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">te devuelve lo que son los datos igual aqu\u00ed los argumentos veremos c\u00f3mo hacer los argumentos para que esa autenticaci\u00f3n, esas cabecera, ese body que tenemos que hacer peticiones porque hay veces que dicen pues mira m\u00e1ndame los productos \u00faltimos modificados \u00bfc\u00f3mo lo har\u00eda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pues con los argumentos que yo le mando aqu\u00ed, leyendo la argumentaci\u00f3n me dice mira m\u00e9telo en el body y me dice modificar y una fecha en este formato entonces yo lo construyo le hago el web remote request web remote get y le digo modificar y le meto la fecha entonces me devuelve ese es el m\u00e1s que nosotros por ejemplo cuando muchas veces tenemos tiendas online queremos sincronizarlas con un sistema rp pues muchas veces tenemos que hacer como un cron entonces ah\u00ed me encuentro aplicativos que el modifier no lo tiene eso es un rollo tienes que traerte toda la base de datos y volver a trav\u00e9s a repasar de verdad que me lo encuentro muchas veces y el modifier ser\u00eda una petici\u00f3n muy sencilla de dame la modifier de la \u00faltima que pasa que que cuando no tiene el modifier el aplicativo por ejemplo jose no lo tiene que un rp muy muy conocido y mira que le he mandado yo ticket nada, se r\u00ede porque he mandado ticket en mi pu\u00f1etero caso y digo mira que es que adem\u00e1s de hecho te viene el producto y en el modifiest no est\u00e1 bien porque haces cambios en el producto en el RP lo traes por el API y vamos a ver el modifiest de hace tres d\u00edas o entonces no tienes nada que ver una cosa en otra, o sea un peque\u00f1o desastre pero bueno salvo sorpresa normalmente en el Remote Get es Modify bien estupendo por ejemplo si pues si quisi\u00e9ramos \"mira quiero actualizar mi tienda online cada hora o cada 15 minutos\" con el Modify lo podr\u00edamos hacer porque t\u00fa le metes una variable de 15 minutos o sea que me trae los productos y si sale uno o dos pues son bastante livianas estas peticiones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Remote post igual cuando yo quiero mandar informaci\u00f3n por lo mismo, la url, el argumento, etc\u00e9tera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y remote GA, esta no la utilizo yo, utilizo esta normalmente o una de estas dos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para PUT, para patch no hay, o sea hay web remote y etc\u00e9tera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, \u00bfqu\u00e9 tenemos que irnos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si el API me dice \"para actualizar un contacto, ten\u00e9is que utilizar el m\u00e9todo put\".<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues ten\u00e9is que irme aqu\u00ed a \"remote request\" y el argumento es decirle el m\u00e9todo put.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed, bueno, mucha teor\u00eda, pero ahora entramos a la pr\u00e1ctica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfQu\u00e9 argumento suelo utilizar yo en esos argumentos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Que es un array, que me va pidiendo distintos argumentos o os pongo vamos si ves la documentaci\u00f3n no te dice mucho y normalmente yo aqu\u00ed os cuento para que os sirva os pongo directamente las peticiones que solo yo utiliza m\u00e1s vale y de hecho voy a dar que eso me ha costado un trabajo de a\u00f1os de distintas actualizaciones que me van pidiendo el array justo que yo utilizo o sea que teniendo las las dispositivos que la vayas a tener, puedes copiarlas y si utilizas una autorizaci\u00f3n b\u00e1sica un nombre usuario y contrase\u00f1a, pues yo digo lo que m\u00e1s he utilizado yo, ya vais probando el que dec\u00eda, el method, si es un array, ser\u00eda method = flecha entonces aqu\u00ed podemos decir el tipo de petici\u00f3n HTTP solo se utiliza en esta funci\u00f3n, en Google Play Remote Recuerda cuando me piden m\u00e9todos tipo PUS, DELETE, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Timeout, por defecto ya es la funci\u00f3n, si no le pones Timeout no te coges una por defecto, es un 10 segundos o algo as\u00ed es por si la API tarda mucho en contestar o eso suele ser, los tiempos de contestaci\u00f3n suelen ser tambi\u00e9n muchas veces cuando pedimos muchos datos cuando la API no me trae paginaci\u00f3n y le digo dame todos los productos, te manda 10.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">000 productos, pues claro no es lo mismo que te lo devuelva en paginaci\u00f3n de 100, que te lo devuelva, bueno no te traen tantos pero bueno entonces ya depende un poco c\u00f3mo funcione pues tienes que ponerle m\u00e1s o menos, me he encontrado APIs con la SSL sin verificar y lo tengo que forzar, por seguridad Word, si no le pones nada la API siempre te va a coger en segura, evidentemente estamos cogiendo datos sensibles viajan por internet y tienen que tener SSL pero bueno, te encuentras sorpresa aqu\u00ed, aqu\u00ed est\u00e1 con sorpresa, esto no lo pon\u00e9is y ya est\u00e1, funciona perfecto pero si encontr\u00e1is una vez sorpresa de que no te contest\u00e1is en el response, te dice que hay errores pues le pones SSL Verify y falses y ya funciona y te hecha la mano a la cabeza porque est\u00e1 trabajando con datos de APIC sin SSL pero bueno, no est\u00e1, hay de todo y luego tenemos las cabeceras y el body las cabeceras suelen ser, y ahora vamos a ver varias documentaciones, donde van las autorizaciones \u00bfme puedo encontrar la autorizaci\u00f3n en el body.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">puedo encontrarme, pero normalmente suelen estar en la cabecera, entonces yo si hago un token, normalmente me pide una authorization y le hago un token, o sea igual flecha y token y despu\u00e9s la api que me da la autorizaci\u00f3n y tambi\u00e9n le suelo forzar el content type que sea JSON, creo que que dec\u00edas, este es el que m\u00e1s o menos se maneja porque t\u00fa te lo traes, lo conviertes enseguida a un array y a los gestiones lo manipulan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y el body suele ser cuando, lo que dec\u00eda por ejemplo, quiero traerme los productos modificados en la \u00faltima hora.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Normalmente ese tipo de query que se llama, o peticiones, las suele hacer en body.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo habitual, todo otra vez os digo, depende de la API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfY tipo de autenticaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas son las cuatro autenticaciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La que yo me suelo encontrar casi siempre, en un 90% es la APIKey.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es, Holder lo tiene, casi todas las tiene.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, normalmente suelen darte una secci\u00f3n de desarrollador y te dice \"Mira, entre en esta secci\u00f3n del desarrollador\" y te damos la constante, la clave para poder interactuar Esa es la m\u00e1s habitual, pero bueno, te puedes encontrar todo La que nosotros utilizamos para WordPress, si nosotros hacemos algo para WordPress que, digamos, se conecta a otro WordPress, utilizamos la b\u00e1sica No s\u00e9 si vais a dar cuenta que desde.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No s\u00e9, una versi\u00f3n, seguro que sab\u00e9is que sale mucho m\u00e1s de la versi\u00f3n pero a partir de una versi\u00f3n dieron una opci\u00f3n de que dentro del usuario t\u00fa ten\u00edas el usuario y la contrase\u00f1a ten\u00eda aparte otra que se llama app password o bien no se le da cuenta y esa es una contrase\u00f1a diferente para que t\u00fa aunque cambies tu contrase\u00f1a como usuario pueda seguir interactuando porque la aplicaci\u00f3n de gd funciona si le pones si le cambia la contrase\u00f1a entonces puedes trabajar una de las dos y el token beater, esta es la b\u00e1sica de usuario y contrase\u00f1a apiqi, una chorizo que te ponen de string y el token beater suele ser que t\u00fa le haces una b\u00e1sica, te devuelves un token bastante largo y ya la siguiente expertise la haces con este token que suele tener una caducidad y depende de d\u00edas o cosas as\u00ed Entonces, yo lo que suelo hacer siempre, pues, cuando empiezo la petici\u00f3n primera, le hago una b\u00e1sica y el token mire y ya luego la siguiente la hago con el propio token, \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y el OAuth, que no es muy habitual, pero esta es la del Google, por ejemplo, \u00bfno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Que es lo t\u00edpico, que te va a una p\u00e1gina de autorizaci\u00f3n, la autoriza y te vuelve otra vez a la p\u00e1gina.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, tienes que programar, pedirle a la aplicaci\u00f3n que te genere esa p\u00e1gina de consentimiento recibe el consentimiento y ese consentimiento nuevamente te devuelve un toque en vida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Que ese ya lo tienes que almacenar en base a datos para poder trabajar con \u00e9l.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ese lo hago, pero es el que menos me encuentro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Salvo que interact\u00faes con Google para hacer todos los servicios, pues tienes que trabajar eso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es un poco rollo porque tienes que hacer programar una URL y d\u00e1rsela a Google.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estoy haciendo el ejemplo de Google.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">tienes que darse a Google para que te devuelva esa aplicaci\u00f3n y la guardas y la devuelvas \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">y entonces ya en esa p\u00e1gina que suele ser la de.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bftodo est\u00e1 correcto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pues va a trabajar \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfy c\u00f3mo se programa eso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">en WordPress \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pues en esos argumentos que os dec\u00eda dentro del VPN Remote yo suelo trabajar esto \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">entonces bueno solo, los trabajamos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed he metido el SSL Valify, esto est\u00e1 mal hecho pero bueno lo he puesto para que estuviera en ejemplo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y aqu\u00ed estoy haciendo una petici\u00f3n con un argumento, con una cabecera que estoy diciendo \"trabajame Jason\" y esta es una aplicaci\u00f3n que te est\u00e1 diciendo que tienes que darle un clean ID, un clean secret, un usuario y un power.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y el GrandType es Power.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bueno, ya est\u00e1, \u00bfSe le ha programado as\u00ed la aplicaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues ya est\u00e1, yo me conecto Entonces me suelen dar Esta por ejemplo, la aplicaci\u00f3n, que ahora recuerdo un poco lo que era Me daban esto, que lo met\u00eda yo en una constante O lo guardaba en base a todo, tal, esta si era fija Y esta el usuario y contrase\u00f1a la met\u00eda yo por.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">el usuario me la ten\u00eda que dar Entonces, pues aqu\u00ed en estas cosas lo que solemos hacer es una p\u00e1gina de ajustes Y en esa p\u00e1gina de ajustes hacemos dos usuarios, mete aqu\u00ed tu usuario y contrase\u00f1a para poder conectar tu aplicaci\u00f3n entonces por eso lo guarda en base de datos, le hace un getOption y cortando me qued\u00f3 muy r\u00e1pido y no s\u00e9 si le hago un getOption y le recojo la usuaria contrase\u00f1a que me guardaba en base de datos y aqu\u00ed le estoy diciendo no utilic\u00e9 SSL, esto est\u00e1 muy mal, pero en este aplicativo me hac\u00eda falta y un timeout de 50 veces o un segundo vais probando porque como las propias peticiones cuando t\u00fa las haces te van dando las respuestas pues t\u00fa vas viendo si tiene errores si no tiene errores, tarda mucho, tarda poco, pues ah\u00ed vais probando.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Otro tipo que est\u00e1 la que utilizo para conectarme con WordPress, este argumento le hago una cabecera y le digo Authorization Basic y codifico en base64 con el usuario de contrase\u00f1a usuario, dos puntos, contrase\u00f1a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con esto ya pod\u00e9is conectar a otro WordPress y ahora vamos a ver el resto del c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tengo como record\u00e1is una URL y unos argumentos y ah\u00ed tengo mi petici\u00f3n de argumentos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando me da un API key, pues estos son los argumentos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">yo hago aqu\u00ed la cabecera, le digo la turizaci\u00f3n, le pongo un toque en espacio y la api aqu\u00ed, este texto que es el tocho que hab\u00e9is visto, lo meto y le meto un timeout porque el que me viene definido por la funci\u00f3n pues es muy corto, pues le pongo 20 segundos y aqu\u00ed con esto pues ya me estoy identificando con otros WordPress y por ejemplo alg\u00fan proyecto ha sido de \"yo tengo un un WordPress para vender y lo quiero conectar con otro WordPress que es una tienda online, o sea una academia online, pues o lo hago cuando se hace la venta y ah\u00ed lanzo un vp remote en un post y lo mando a la informaci\u00f3n, entonces por querer el usuario y lo que lo hago etc\u00e9tera, y el token vira es un poco m\u00e1s pu\u00f1etero, pero bueno tampoco al final es pedirle una b\u00e1sica que esta, esta es parte de una funci\u00f3n completa entonces yo ah\u00ed para no repetirme la directiva drive que intento llevarla mucho que es \"don't repeat yourself\" si no te repites continuamente tengo una funci\u00f3n API entonces si yo no le mando las credenciales del token, si no est\u00e1n vac\u00edas a eso si no est\u00e1n vac\u00edas el token pues util\u00edzame el token que t\u00fa tienes guardado en las credencial y me hace una autorizaci\u00f3n de tipo vira y si no est\u00e1 me hace la.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">por eso tengo que hacer esa funci\u00f3n o tengo resultados veces cuando es una petici\u00f3n por ejemplo de la ex producto por ejemplo tengo que decirle pues mira cogemos el usuario de contrase\u00f1a, aqu\u00ed me hace un terenario de las creencias de uso en NAMI y dame la vac\u00eda y codifico esto en el body.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este API me ped\u00eda que la codificara en un body.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues nada, yo lo codifico y le mando y entonces me devuelve un VIRS y este VIRS lo vuelvo a utilizar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Repito y te digo m\u00e1s veces, esta es una forma de tenerlo todo agrupado en una sola petici\u00f3n y lo que hago es ejecutar la funci\u00f3n dos veces.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No os preocup\u00e9is que ahora vamos a verlo en la pr\u00e1ctica y qu\u00e9 pasa una cosa que imaginaros que tenemos un pie de p\u00e1gina y tenemos se me ocurre por ejemplo ahora por ejemplo hay si por ejemplo que el servidor sea verde o no hay una pipa eso entonces t\u00fa le puedes decir oye este es el video verde entonces t\u00fa le das dominio y te lo dice hay una API para eso imagina que yo lo tengo en el pie de p\u00e1gina entonces cada vez que un usuario si no est\u00e1 cachada, cada vez que usuario vea esa p\u00e1gina est\u00e1 haciendo una petici\u00f3n a la API, las peticiones a API suelen ser lentas, no suelen ser r\u00e1pidas hay unas m\u00e1s r\u00e1pidas, unas m\u00e1s lentas entonces las peticiones, fijaros que le estoy haciendo el usuario hacer una petici\u00f3n API continuamente por un lado la API me va a decir \"me est\u00e1s haciendo muchas peticiones por segundo, te voy a bloquear\" hay APIs que, incluso hay una API que es muy graciosa, que cuando le haces peticiones, no s\u00e9, eran 20 por ah\u00ed, a partir de esa 20 te bloquean como 2 o 3 minutos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si t\u00fa est\u00e1s leyendo productos, tienes que comprobar que esa API no te ha bloqueado por tiempo si te ha blocado el tiempo le tienes que decir \"esperate\" entonces te pueden hacer si lo tienes justo en el frontend que sea muy lenta en la p\u00e1gina y le est\u00e1s pediendo demasiadas veces una misma informaci\u00f3n que t\u00fa ya la tienes almacenada entonces \u00bfc\u00f3mo se hace esto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pues hay un invento muy bueno de Warp que se llama Transient \u00bfqu\u00e9 quiere decir Transient.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">que es una forma de cach\u00e9 informaci\u00f3n con una caducidad yo le digo guardame por ejemplo vamos a otro ejemplo los productos guardame los \u00faltimos productos modificados y si yo quiero ense\u00f1arlo despu\u00e9s en el frontend varias veces pues yo trabajar\u00eda con el transing y guardar\u00eda los arrays de los ids o incluso la informaci\u00f3n que yo quiera la imagen la tal entonces yo le digo al transing guardamelo y durante tres horas o cuatro horas ahora en la siguiente sale el c\u00f3digo de Transient, entonces voy a ense\u00f1ar no solo pedir peticiones al API sino guardarla y cachearla y ya mostrarle al usuario cuando yo quiera entonces, \u00bfc\u00f3mo se suele hacer una petici\u00f3n API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pues hago mi funci\u00f3n, los argumentos ya os los he dado, con una URL API y hago un.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">utilizo vprimotget, aqu\u00ed por ejemplo he hecho la petici\u00f3n con get le digo que me coja, o sea lo que me devuelve que es un response, que me coja el body, porque si t\u00fa le haces un printr al response, te salen las cabeceras, raw bodies, todo, entonces tiene una funci\u00f3n warp, se llama \"wpRemoteUtilityBody\" y me devuelve otro, un response body y este body ya lo puedo decodificar porque es un JSON, que es con el JSON decode y ya a partir de ah\u00ed voy viendo que me va Normalmente suele dar una respuesta del c\u00f3digo, te dice \"mira, la petici\u00f3n HTP 200\" pues te devuelvo la informaci\u00f3n y aqu\u00ed la tienes y te da un array.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces ya a partir de que de esta tercera funci\u00f3n ya puedo trabajar lo que es la informaci\u00f3n que me ha dado la API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora vamos a a ver un poquito en tiempo real y ya que trae los port\u00e1tiles vamos a ver un poco c\u00f3mo se hace, vale, con estas tres funciones devolvemos ya el body response, este ya empezar\u00eda yo a trabajarlo, entonces que suelo hacer yo normalmente, pues hago una funci\u00f3n que se conecta con mi API, le hago los argumentos, le hago estas tres funciones y a partir de aqu\u00ed las devoluciones son devu\u00e9lveme un error o devu\u00e9lveme un ok con todos los datos que yo necesitaba y aqu\u00ed yo ense\u00f1aba el transient que lo vamos a ver tambi\u00e9n lo que hace es, y adem\u00e1s lo utilizamos en el profile, porque ahora vamos a hacer un plugin que va a hacer expeticiones a WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">org y nos va a mandar la informaci\u00f3n del profile de de nuestro usuario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, si yo lo pongo en mi p\u00e1gina web, lo que dec\u00eda otra vez el ejemplo, lo pongo en mi pie de p\u00e1gina, pues voy a empezar a hacerle peticiones a WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">org y llegar\u00e1 un momento, la mayor\u00eda de las veces lo que hacen las APIs es que te bloquean, tienen una serie de peticiones, entonces si t\u00fa haces muchas simult\u00e1neas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces lo que haces es cacheo, te hago una petici\u00f3n cada tres horas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto es lo que hace, os explico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Get Transient con una key que t\u00fa puedes hacer la que t\u00fa quieras, la sintaxis esta es la que t\u00fa quieras que t\u00fa sepas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No met\u00e1is solo utilizar un prefijo, el tipo de consulta y el tipo de informaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con esas tres as\u00ed para acordarme.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero aqu\u00ed pod\u00e9is poner Manolo, Pepito o lo que quer\u00e1is, eso da igual entonces esto te devuelve o la informaci\u00f3n o un false, entonces si es false en esta l\u00ednea har\u00eda el vprimodget, vprimodget, porque estamos haciendo lectura y la metir\u00eda en esta variable y la guardar\u00eda con esta key, con esta informaci\u00f3n y durante un tiempo hay unas constantes en wordpress que quita diciendo horas en segundos por tres, o sea t\u00fa puedes poner aqu\u00ed lo segundo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, \u00bfqu\u00e9 hace el tr\u00e1nsit en la pr\u00e1ctica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es yo leo la informaci\u00f3n de esta variable, me la devuelves, \u00bfqu\u00e9 han pasado las tres horas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hace petici\u00f3n de API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, el primero que ha pasado de las tres horas hace la petici\u00f3n real de API y todo el resto de gente le sale donde sale con el con la tu propia cach\u00e9os con lo cual t\u00fa est\u00e1s trabajando con tu formaci\u00f3n local que siempre es m\u00e1s r\u00e1pida siempre o no lo mismo que t\u00fa le das base a todo que t\u00fa tengas que pedir un sistema te recoja la informaci\u00f3n las manipuladas las tr\u00e1nsit s\u00faper importante y para este ejemplo lo m\u00e1s a ver y yo voy a estar la teor\u00eda est\u00e1 m\u00e1s o menos bien c\u00f3mo va y no me hab\u00e9is interrumpido, la hab\u00e9is cogido todo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a trabajar si quer\u00e9is sacar los port\u00e1tiles y vamos a ver un poquito qu\u00e9 vamos a hacer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se r\u00eden, por ah\u00ed se r\u00eden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a ver, yo para este ejemplo he hecho un plugin, aqu\u00ed no voy a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bueno, tambi\u00e9n entramos al detalle, aqu\u00ed tenemos la oportunidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">He hecho un plugin que va a conectarse al WordPress y me va a mostrar por el perfil de WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una cosa chula que podr\u00eda tener esta pizzer\u00eda que me diera las medallas, o sea que yo pudiera por ejemplo tenerlo en mi p\u00e1gina web de personal y y se vieran todas las medallas que tengo yo conseguidas por la interacci\u00f3n con la comunidad, pero no lo da.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos, aqu\u00ed est\u00e1 la informaci\u00f3n que nos da.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a verlo aqu\u00ed, tomo m\u00e1s de tiempo, una horilla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Oye, \u00bfya me he comido una obra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si es que me encanta, me voy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfEste pasa aqu\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ah vale porque esta petici\u00f3n no tiene.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">esta petici\u00f3n de WordPress a ver si puedo conseguir la documentaci\u00f3n es que me la dieron las peticiones API de WordPress est\u00e1n muy escondidas y aqu\u00ed est\u00e1 s\u00ed aqu\u00ed est\u00e1 en user fijar hasta la documentaci\u00f3n que yo tengo de WordPress y si entreis REST API Handbook, aqu\u00ed est\u00e1n todas las peticiones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos por ejemplo incluso sacar peticiones del plugin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cu\u00e1ntas descargas hay, un mont\u00f3n de cosillas interesantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bueno, las descargo un tiempo que las quitaron y tal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces aqu\u00ed tenemos el endpoint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfQu\u00e9 quiere decir el endpoint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A ver si me hablo explicarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando tenemos una petici\u00f3n API, 100% de los casos tenemos una url base, que es por ejemplo api.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">dominio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">com\/laversi\u00f3n porque es importante porque si nos dice a presionar la API puede ser que t\u00fa crees cambios en la API y dejes de funcionar aplicaciones de muchos usuarios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces es una buena pr\u00e1ctica que ponga \/v1\/v2 para que el desarrollable de tiempo que si t\u00fa has lanzado una nueva versi\u00f3n de la API te d\u00e9 tiempo a modificarla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuida a los desarrolladores, siempre nos gusta que nos cuiden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por lo menos les pedimos \"Dano versionado\" que si t\u00fa sacas una versi\u00f3n 2 yo me d\u00e9 tiempo a programarla y trabajarla pero que la v1 siga funcionando.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero ah\u00ed asiente y te la encuentras otra vez que no.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed me dice que puedo utilizar la versi\u00f3n de user y aqu\u00ed dice el esquema, va a estar una documentaci\u00f3n que da as\u00ed WordPress y te dice mira si me da el ID, el identificado del usuario, el username, fijaros aqu\u00ed esto lo que devuelve creo yo que es, aqu\u00ed est\u00e1 el list user, entonces te dice mira puede hacer una petici\u00f3n que sea \/vpv2user esta es la de Warp.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">reg, no la de Warp.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">reg pero bueno, me sirve para el ejemplo y aqu\u00ed puedo saber los usuarios de una fijaros que Warp hace el versionado, aqu\u00ed pone v2 entonces si Warp hiciera una nueva petici\u00f3n, o sea, una nueva petici\u00f3n v3 por lo de suelo no derrida de tiempo, pon\u00e1 m\u00e1s la v3 porque seguramente las peticiones son m\u00e1s r\u00e1pidas, tiene m\u00e1s argumentos, etc\u00e9tera evidentemente se hace una nueva versi\u00f3n por algo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces yo en mi ejemplo que os programaba aqu\u00ed yo tengo aqu\u00ed mi url que es warpress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">org\/wpjson\/wporgv1use.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esa es como la url base.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De hecho lo he guardado yo aqu\u00ed en una constante porque no se va a modificar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed fijaros que aqu\u00ed lo que he hecho es Aqu\u00ed le he dado la traducci\u00f3n y he hecho un shortcode Aqu\u00ed no \u00edbamos a poner m\u00e1s cositas Lo que he hecho es meter un shortcode que se llama \"webprofile\" Este c\u00f3digo lo dejar\u00e9 en el este para que lo pod\u00e1is trabajar Es un archivo PHP \u00fanico para que no compliquen la vida en m\u00e1s cosas Os explico el c\u00f3digo que he hecho este ser\u00eda web profile y va a ejecutar esta funci\u00f3n con unos atributos el atributo, si no quiero m\u00e1s recordar, aqu\u00ed tengo que decir chiclana era user, user igual a no s\u00e9 qu\u00e9 le puse \"vp profile\" y \"user davis perez\" que es mi usuario entonces conecta ya la API y me la va a poder ejecutar aqu\u00ed le pongo que si no me has puesto ninguna que dice \"davis perez\" y entonces, como \u00e9sta no necesita tu aplicaci\u00f3n, no necesita query, no necesita nada hacemos un \"upremote\" directamente a la url y como veis aqu\u00ed en la coma no hay argumento no hay cabecera, no hay nada entonces le estoy diciendo, s\u00e1came la url con el shortcode Ser\u00eda todo esta URL warprep.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">org\/vpjson\/v1user\/davisperes que si navegamos a esta URL que la ten\u00eda por aqu\u00ed me va a salir el json, este es el json Mientras me dice, fijar lo que me da, me da un ID, que este ID no s\u00e9 que ser\u00e1, pero yo tengo ya un ID aqu\u00ed Me da mi nombre, que es el que yo he puesto all\u00ed, me da mi URL y me da mi descripci\u00f3n, el enlace, un Slug Me da los distintos avatars en distintos formatos, en 24, 48 p\u00edseles y 96 p\u00edseles me da un meta vac\u00edo y aqu\u00ed me dice HRF Self y un Collector, que yo creo que se llama igual pero bueno, en la documentaci\u00f3n no explicar\u00e1 un poquito m\u00e1s, pero bueno aqu\u00ed se ve que est\u00e1 la URL y aqu\u00ed est\u00e1 la.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">este JSON es el que yo tengo que trabajar, esto es lo que me da, aqu\u00ed estar\u00eda guay que me diera las medallas que pusiera aqu\u00ed como se llama las medallas eran batches y entonces te diera la medalla entonces podr\u00edamos hacer en propio que este plugin ser\u00eda guay por eso para que tuvieran las medallas pero bueno se ha quedado ya mitad en un plugin sencillito pero bueno por lo menos para sacar y voy a ense\u00f1ar resultados entonces claro yo ahora estoy trabajando con con esta petici\u00f3n le hago un remote y aqu\u00ed devuelvo un response code y si me sale 200 rec\u00f3geme la informaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed, a lo mejor, ten\u00eda que haber trabajado un \"iset\" para que no me d\u00e9 fatal error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los arrays que no tienen un definido una \"key\" aqu\u00ed me estoy yo corrigiendo Aqu\u00ed me dice si est\u00e1 definido esta variable y es 200 sigue pidiendo informaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hac\u00eda en Key Profile, le coge la informaci\u00f3n del body y lo decodifica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto ya, el Profile es un Array, del JSON que ve\u00eda y un Array.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y vamos a verlo ahora, en un r\u00e1pido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed le meto un estilo, ya os digo, esto es que era un peche peche, est\u00e1 mal hecho porque los estilo se suele hacer en colan y todas estas historias, pero para el ejemplo no quer\u00eda yo meterme en m\u00e1s archivos y m\u00e1s en colas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces le meto aqu\u00ed un estilo ah\u00ed jacodeado, esto no se puede hacer, pero no se debe hacer, pero lo he hecho para que se vea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y ya empiezo a trabajar con esta variable que es la profile que me viene del API y ya empiezo a hacer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Importante trabajar con \"iset\", importante, porque sino mostr\u00e1is fatal error en vuestro c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una muy t\u00edpica es, \"iset\", o sea, si est\u00e1 definido ese array y tiene valor, es sencillo, lo puedes hacer r\u00e1pido con \"empty\".<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\"Empty\" es un \"iset\" tambi\u00e9n dentro, entonces si no estuviera definido te dar\u00eda un falso, pasar\u00eda a siguiente entonces lo que yo le digo es si no est\u00e1 vac\u00edo la url va a avatar que hab\u00edamos visto el giso ens\u00e9\u00f1ame la avatar y aqu\u00ed utilizo el 96 y aqu\u00ed igual si no est\u00e1 vac\u00edo el profile name entonces yo voy ense\u00f1ando la informaci\u00f3n y la voy mostrando y aqu\u00ed he cogido pues la url vale aqu\u00ed por ejemplo tambi\u00e9n tendr\u00eda que decir si est\u00e1 definido esto para que aqu\u00ed por ejemplo, vale, no, perd\u00f3n, y set, vale, todos los keys estos los tengo que verificar que existen, pues si no me da, si por lo que fuera la, que no es el caso, pero tampoco t\u00fa no puedes estar supeditado a que la API te d\u00e9 una informaci\u00f3n u otra, entonces t\u00fa mejor, oye, ya que estoy tocando este array, vamos a comprobar lo que est\u00e9 definido y entonces ya lo ejecuto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces le hago un echo y le hago un tar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed como es un short call lo que hago es un return HTML.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces este es un sencillo, el avatar, el nombre y el descripci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a ver el resultado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed no he trabajado el transing y vamos a hacer un transing para no machacar la API, entonces yo creo que aqu\u00ed est\u00e1, activamos el plugin error activamos y lo que dice es un shortcut y se supone que mira me ha cogido mi foto del avatar, me ha cogido el Davis Perez que incluso le he metido el enlace y la descripci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta p\u00e1gina, imaginaos que la tengo mi p\u00e1gina de Davis Perez Gar, porque quiero ense\u00f1ar mi perfil de WordPress, etc\u00e9tera, y empieza a ponerla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces empieza a hacer peticiones, lo que yo quiero es esto cachearlo, para que no haga peticiones a la API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, \u00bfc\u00f3mo lo har\u00eda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues con el tr\u00e1nsit, como ya hemos visto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo aqu\u00ed tengo un truqui truqui que es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">claro aqu\u00ed veis que le hago un remote que es, vale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">entonces yo lo que har\u00eda es hacer un antes de hacer la petici\u00f3n API cachearlo con el trance y ver que tenga una caducidad y ya lo muestro, vale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">y si no me hace un remote que es, vale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">entonces por aqu\u00ed vp atr\u00e1s, yo que tengo aqu\u00ed un.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">entonces le digo, VPOR y la variable, perd\u00f3n, VPORG, la variable que sea user, \"vpUser\" entonces, el \"transient\" yo le dir\u00eda \"getTransient\" \u00bflo veis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">me parece que se ve poco, \u00bfno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">no hab\u00e9is quejado, \u00bfeh.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">est\u00e1is callados, no s\u00e9 si os estoy aburriendo \u00bfest\u00e1is asustados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">est\u00e1n asustados, que s\u00ed le hago un \"getTransient\" de esta variable que yo me la he guardado as\u00ed en mi base de datos y si no existe o me da un false porque el false te lo provoca si saca ducado pues hace esta petici\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces yo lo que har\u00eda es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">aqu\u00ed r\u00e1pidamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bueno no.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">a ver, para hacerlo bien lo que tendr\u00eda que hacer es guardar la ra\u00edz del profile, o sea tendr\u00eda que cachear esto entonces lo que har\u00eda es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">un de estos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">aqu\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">y un de estos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">as\u00ed r\u00e1pido, vale, entonces yo guardar\u00eda realmente el profile, que es el array de mi usuario con una caducidad de tres horas, entonces cada tres horas la primera petici\u00f3n siguiente har\u00eda una petici\u00f3n API y la guardar\u00eda en mi cache que es \"web org query user\" y a partir de aqu\u00ed ya empiezo yo a hacer comprobaciones, ya le hago lo del HTML y todo eso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces si si da alguna vez error, pues mostrar\u00eda vac\u00edo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Siempre ten\u00e9is que cuidar mucho el tema de la.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voy a quitar el tr\u00e1nsito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le cuidar el tema de las errores fatales y todo esto porque podamos crear tragedias en p\u00e1ginas web que dejen de funcionar y si a lo mejor es parte del contenido no te carga el footer y los footers muchas veces est\u00e1n los JavaScript, o sea que te puedes cargar p\u00e1ginas web si no trabajas con lo Icer, en lo Array y en lo Enty cuando queramos definir valor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No s\u00e9, Spotify tiene aqu\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfPasa de Spotify.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El estudio hecho en multitud de documentaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mira, web, APIs, mira.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">por ejemplo, aqu\u00ed podr\u00eda yo ense\u00f1ar con esta API la lista de mi m\u00fasica y la podr\u00eda ense\u00f1ar en mi p\u00e1gina web Esto es muy interesante, ahora me acabo de acordar porque los software normalmente tienen la mala costumbre de darte, oye si incluye, por ejemplo, una aplicativa de reserva de viajes y te dice no pues hazle un iframe en mi p\u00e1gina web p\u00e1gina web, pero los iframes no posicionan, no guardan el SEO, entonces puede ser que deje de mostrar informaci\u00f3n a Google porque el software no te ha dado la informaci\u00f3n bien entonces la app y tambi\u00e9n el SEO muestra informaci\u00f3n del aplicativo en mi p\u00e1gina web y posiciona, los iframes no posicionan, vamos de tiempo entonces eso claro el app y tambi\u00e9n ayuda al SEO, porque te muestra estos planos que t\u00fa despu\u00e9s la puede utilizar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando no tienes documentaci\u00f3n de la API, \u00bfpodr\u00e1s hacer algo como pasar a por los WSEDS y hacer una petici\u00f3n para que se vea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se que de todo, se que de la selva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O no hay manera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, s\u00ed, hay veces que la propia API, cuando t\u00fa metes la URL, te da como una petici\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hay veces que s\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero es que est\u00e1 preparada la API, \u00bfno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, s\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, s\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfPor eso te refiere a una lista de Mero.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, m\u00e9todo, s\u00ed, te lo tienes que dar de alguna forma.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfY si lo han desarrollado as\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfY para el list.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, hab\u00eda alguna API que t\u00fa le daba un par\u00e1metro y te daba la.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ha sacado una IA, que es bastante producida, pero.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al final, el micro se ha olvidado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(Pedidos) (.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">) Solamente se les hace la URL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Claro, primero que se hable la URL, que si no, no te la puedes inventar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y claro, aqu\u00ed por ejemplo, aqu\u00ed te dice \"require HTTP\".<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estaba viendo aqu\u00ed si encontraba yo algo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este est\u00e1 dando el c\u00f3digo para hacerlo a trav\u00e9s de.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed te da aqu\u00ed alguna opci\u00f3n, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al final, las de WarpPres, por ejemplo, aqu\u00ed tiene.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues no s\u00e9 decirte, vamos a probar un d\u00eda para hacer la prueba y si nos dejara.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si le ponemos esta base.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mira, justo aqu\u00ed tiene el ejemplo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00edjate, le he dado la URL de base, la de WarpPres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">org y me est\u00e1 dando, esta es la versi\u00f3n 1 del API y aqu\u00ed tiene los endpoints, que son las peticiones que puede hacer tiene por get, tiene m\u00e9todos get ah mira, aqu\u00ed est\u00e1, este es el que utilizaba, el user Aqu\u00ed tiene user, entonces si me hace petici\u00f3n de www.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">warp.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">org\/v1, aqu\u00ed, si hace esto, \/vuser, aqu\u00ed te va a encontrar un argumento, ya te vas leyendo, s\u00ed, m\u00e1s o menos se entiende, \u00bfno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, el argumento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Paginada, ocurre en p\u00e1gina de collection, que es por defecto de uno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Claro, si t\u00fa te dices alg\u00fan usuario no vas a tener paginaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per page, para que t\u00fa puedas manejar la paginaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto est\u00e1 bien, porque t\u00fa dependiendo de tu aplicativo, si a lo mejor est\u00e1s haciendo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero hecho que esto no lo lanzan todos en las ambiciones o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">yo te digo, es una selva yo me he encontrado software que me dice no no, API, eso que es API yo te doy un CSV y tu ya lo gestionas hombre, vamos a hacer lo mismo porque yo, la API la puedo controlar yo cuando yo quiera y puedo hacer peticiones de modificado por ejemplo, lo del modificado dir\u00e9is que he hecho rada, yo podr\u00eda darle una petici\u00f3n modificada en la ultima hora as\u00ed no lo tiene pero es un mont\u00f3n entonces que tenes que hacer pues eso, buscarte la gente pues eso, buscarte la vida como hacemos todos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Te traes toda la base de datos, te traes con lo ineficiente que es porque la API tarda m\u00e1s, te traes toda la base de datos, la gesti\u00f3n, yo tambi\u00e9n he hecho por ejemplo tablas intermedias, que hago, a ese Hordes por ejemplo no tengo lo \u00faltimo de FICA, \u00bfc\u00f3mo lo resuelto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues me he hecho una tabla intermedia personalizada en WordPress que le guardo el ID de producto y una baliza 1 o 0 entonces lo pongo todo a cero y entonces lo que hago es cojo todos los productos me los guardo en esa tabla y ya cuando haga yo la petici\u00f3n le hago pues cada 5 cada 10 y voy recorriendo esa tabla y voy d\u00e1ndole un 1 cuando la he terminado de bueno, una soluci\u00f3n si, si, efectivamente pero es que el modifi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">no, lo que hago es recorrerlo porque si me diera el modifiye podr\u00eda guardarlo tambi\u00e9n en otra columna que fuera modifiye entonces yo har\u00eda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">eh.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">dame los modifiye pero no y esa es super usada, esa la he usado yo un mont\u00f3n pero es que te encuentra de todo va entonces, pues si, que es la cerpa A ver, si el cliente, primero el cliente, que normalmente suele ser el cliente que utiliza ese software entonces el cliente normalmente paga esas herramientas, entonces le dice \"oye mira que mi desarrollador me est\u00e1 diciendo que no puede interactuar con vuestra API, \u00bfqu\u00e9 pasa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\" suele tener m\u00e1s presi\u00f3n el que paga, el que t\u00fa que est\u00e1s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">el que cobra, justo, de frente a gente Yo de hecho alguna vez le digo al cliente mandale un correo y yo que me de cari\u00f1o Otra cosa que suele pasar, cuando tu estas desarrollando y escribes en base de datos No puedes hacerlo en producci\u00f3n, imag\u00ednate que estas haciendo pruebas, metes un producto de etc Y empiezas a asociar en su base de datos, pues que solo has pedido una cuenta de pruebas A partir de la una es terapia de grupo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las que tienen una cuenta de pruebas es fenomenal, estupenda porque t\u00fa te conectas y empiezas a escribir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo t\u00edpico de \"hoy hago un pedido y lo quiero escribir en tu aplicativo\".<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pues claro, para hacer mis pruebas tengo que meterte datos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">entonces pides esa cuenta de prueba, si te la dan, si no te la dan, \u00bfqu\u00e9 haces.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pone una cuenta gratuita, porque no vas tapando una aplicaci\u00f3n y si la utilizas, y adem\u00e1s suena a ser una aplicaci\u00f3n muy caro, o bueno, depende de ello todo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes hacer una cuenta de prueba gratuita, s\u00ed, s\u00ed, te llama al comercial, oiga, que he visto que est\u00e1 interesante en nuestros aguas, y t\u00fa, no, yo s\u00ed he desarrollado, mi cliente s\u00ed lo utiliza, pero como no ten\u00e9is cuenta de prueba, yo tengo, bueno, historia, que os voy a cantar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces, pues estas cosas son truquillos que vas haciendo conformado, te vas peleando con la API y entonces las cuentas de pruebas suelen ser para.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">cuando hay el solo de lectura que un cr\u00edtico dice \"no, no, l\u00e9eme mi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\", no te hace falta, hace un guide y ya est\u00e1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y s\u00ed, entonces pues ya es lo que te vaya encontrando, es una silva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ya digo, yo mi pelea la \u00faltima vez fue con una persona que me mandaba un CSV, yo pens\u00e9 que con un CSV qu\u00e9 hago, cu\u00e1ndo me lo dejas, no s\u00e9 ni cu\u00e1ndo me lo dejas, afinar que ten\u00e9s que quedar, a que hora me la vas a dejar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">) S\u00ed (.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">) (.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">) S\u00ed, s\u00ed, s\u00ed, ah\u00ed, cosa, ah\u00ed terapia de grupo, a partir de ahora de terapia de grupo, vamos a contar historias, pues s\u00ed, te encuentras de todo, vale lo mejor es tener tu documentaci\u00f3n, de hecho, a ver vosotros que ten\u00e9is clientes y te van diciendo cosas, mira que quiero que mi WordPress me tenga informaci\u00f3n tal, a ver que que tu utiliza, normalmente si el cliente ya tiene un software ya te adapta, pero si no tienes software pues tu le vas diciendo mira yo este tiene un API con este si no te importa tal, entonces tu vas viendo un poco, tambi\u00e9n le cierra un poco al cliente en el sentido de oye si el software que estas viendo lo vas a contratar, no tiene API, cosas raras, tambi\u00e9n la API es una forma de factusol, bueno no, factusol tiene happy ahora justo la \u00faltima mitad que hay en malaga nos dec\u00eda que alguien ten\u00eda que conectar a factusol si tiene la base de datos en la nube, si la tiene en local no ah vale, ah\u00ed hay mucha creaci\u00f3n y el cambio mental es lo que sale si, efectivamente, otro llega al otro y dice mira que me estas pidiendo happy eso vale no se cuanto m\u00e1s y bueno ya dependiendo un poco no suele ser una cuenta mayor as\u00ed lo que te cuente es para encontrar mal formateado Jason o te lo metes en un stream yo una vez digo porque no me coge bien el Jason y era porque estaba entre comillas hac\u00eda una cosa rara y ten\u00edas que formatearla otra vez antes de hacer el JSON de code le ten\u00edas que hacer as\u00ed, me hac\u00eda una cosa muy rara entonces al final pues eso es, as\u00ed como modo resumen y me vais preguntando m\u00e1s cosas primero documentaci\u00f3n me documenta, que me d\u00e9 documentaci\u00f3n que yo sepa ver qu\u00e9 autenticaci\u00f3n tiene, si es la de api perfecta, porque tu con una api te la metes y la coges, la guardas en un base de datos, perfecto, que es por token bieres, pues nada, hago autenticaci\u00f3n, cojo el bieres, lo puedo guardar tambi\u00e9n en un transient token bieres, me veo la documentaci\u00f3n en cuanto tiempo me caduca el token mirror.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El token mirror, qu\u00e9 pasa, que t\u00fa a lo mejor calculas un tiempo que no se ejecuta, pero no s\u00e9 si siempre se ejecuta ese tiempo a la misma vez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces tienes que hacer una comprobaci\u00f3n en la funci\u00f3n de que el token mirror no est\u00e9 caducado para poder regenerarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">historia que ten\u00e9s que encontrar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo les digo que el 80-70% de Api casi siempre es la ApiKey que es lo m\u00e1s c\u00f3modo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O tienes que hacer m\u00e1s comprobaciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si el toque me da ropa pues le hago otra petici\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces echadle un vistazo, al final no nos da tiempo a ver el c\u00f3digo que pong\u00e1is, pero yo digo que cualquier cosa, como ten\u00e9is mi p\u00e1gina web, me pregunt\u00e1is sin problema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entonces utilizar VPR Mode, vamos a ver si os estamos haciendo el resumen, la documentaci\u00f3n bien documentada que podamos interactuar, el cliente tiene el poder, que paga tiene el poder, con lo lo cual yo puede pedir documentaci\u00f3n, cuenta de pruebas y voy a escribir datos no lo escribo en el cliente, lo escribo cuando ya est\u00e9 terminada la programaci\u00f3n repaso la programaci\u00f3n, me pongo a programar y ya part\u00ed de ah\u00ed por hacer pruebas, errores y terminar el trabajo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y sobre todo utiliza Abstrancia, cuando teng\u00e1is peticiones siempre es importante la Abstrancia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ya digo, para la lectura de este ejemplo que he hecho yo del pre-fit, no lo pondr\u00eda en producci\u00f3n si no fuera con un transient porque es que si no lo publico en el repositorio y ya dicen \"encontra me va a empezar, me genera que ten\u00e9is un poco de \u00e9xito y hac\u00e9is un play y se conoce mucho\" ahora empieza, pod\u00e9s cargarte un servicio r\u00e1pidamente, claro ellos tienen sistema de bloqueo para que su servicio siga disponible a los usuarios pero claro dar\u00eda un mal servicio porque los usuarios \"oye que le estoy dando y no funciona\" que no s\u00e9 qu\u00e9 claro todas esas cosillas el transient te garantiza que t\u00fa haces bien tu trabajo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es muy f\u00e1cil, le pon una caducidad en segundos y ya lo estimas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yo que suelo poner, como son cada tres horas, la primera petici\u00f3n la hace, pues tampoco gusta m\u00e1s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Que hay una informaci\u00f3n que no cambia mucho, que dices t\u00fa, bueno, tarda, pues le pones seis horas, un d\u00eda, no importa, y puesto tres d\u00edas entonces ya el transing no te sirve transing es para cuando t\u00fa sigues, la vayas pidiendo pero no, t\u00fa lo dices por lo de las finanzas, no.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ah\u00ed el transing no te sirve lo que pasa es que t\u00fa te la tienes que guardar o en base de datos o un transing de ese lote de datos (hombre hablando) No, no, es as\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso tambi\u00e9n es efectivamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Est\u00e1s ah\u00ed y tr\u00e1nsit no te sirve, por ejemplo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Porque t\u00fa no le vas a ense\u00f1ar una informaci\u00f3n caducada al cliente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para ponerle minutos no te sirve.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A no ser que, a ver, t\u00fa puedes poner 60 segundos un tr\u00e1nsit, no pasa nada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, para que, por ejemplo, no est\u00e9s pidiendo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Claro, t\u00fa piensa que.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para eso est\u00e1s pensando, para que t\u00fa no hagas las peticiones siempre, o sea, la hagas solo la primera vez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si tienes, por decir algo, mil visitas, no son mil peticiones, de a pi, son mil visitas, o sea, una petici\u00f3n cada minuto o lo que sea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, s\u00ed, vas probando.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed yo he dado un poco las reglas, pero que a partir de ah\u00ed, la primera vez que lo utilizamos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voy a dar las bases, ya est\u00e9is trabaj\u00e1ndolo, \u00bfvale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(Murmullos) No, no se escucha, simplemente se queda grabado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No me acuerdo de la obra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(Risas) Quer\u00eda preguntarte c\u00f3mo haces el logueo o traqueo de las acciones que haces para si actualizas en base de datos en remoto, por ejemplo, si te integras con Holder, puedes hacer la petici\u00f3n para comprar un servicio producto, \u00bfeso es lo que haces de alguna manera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, en Google Comer hay un m\u00e9todo que est\u00e1 s\u00faper bien, que es de Vloz, que se inter, que.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">que lo voy a ense\u00f1ar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deboog Log Ad o algo as\u00ed era.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deboogie, mira que est\u00e1 de boogie no, esto no es lo de ah\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hay un m\u00e9todo que es log, es que no me acuerdo, lo he trabajado, pero para Tiendas Online lo suyo ser\u00eda vale no me acuerdo si no luego no me acuerdo como vamos a estar por aqu\u00ed que yo voy al c\u00f3digo para que no se que he grabado todo pero que hay si hace una tienda online puede utilizar un m\u00e9todo que tiene Woocommerce que con el objeto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bft\u00fa acuerdas Pedro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">hay un objeto que tiene WooCommerce que es vc2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">lo me parece, estoy hablando de memoria, se lo registro, entonces tu le metes un comando y a lo mejor puede ser la devoluci\u00f3n de que te da el API y cuando te de error, pues tu tienes un c\u00f3digo para el c\u00f3digo 200 si no has c\u00f3digo 200, guardame el error, entonces le guardas ese log y entonces en Google Commer, en status log, ah\u00ed se encontrar\u00eda, es muy facilillo, est\u00e1 muy bien, entonces ya dependiendo, \u00bfqu\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">s\u00ed s\u00ed s\u00ed para Google Commer s\u00ed, s\u00ed, seguro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es que Google Commer tiene dos cosas muy interesantes para la API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tiene el Actions Schedule, que es como una librer\u00eda para hacer peticiones por debajo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Utiliza Google Commer Subscricions y todas estas para que se hagan las peticiones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Buscaste un Schedule, va muy bien.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y tiene otro que es lo de Debug.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Que no, pues te puede guardar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La mayor\u00eda de las veces, como suelen ser las indicaciones que t\u00fa pones una p\u00e1gina de ajustes y t\u00fa le pones usuario de contrase\u00f1a, le da a guardar, pues ah\u00ed lo que hago es ense\u00f1ar, la ventanita est\u00e1 de warper que le hace un aviso le pongo error, no se ha podido autenticar, ser t\u00edpico m\u00e1s a esto entonces le hago un echo y directamente salgo bookcommer, usc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">deboot, o sea lojo o algo as\u00ed y el nombre, ya te he puesto el nombre que me ha faltado cuando tu haces una petici\u00f3n de API te suele devolver el error te da un c\u00f3digo y te da el mensaje pues tu solo guardas en el log y ya est\u00e1, entonces si ha pasado algo, te va el log y lo ves que no tuvieras esto y quieres tener, pues puedes hacer una ombra personalizada y voy guardando el log y luego en la aplicativo le pongo una configuraci\u00f3n y le pongo una p\u00e1gina de todo pero si hay Google comers tienes ya el m\u00e9todo ya todo hecho, no tienes que poner m\u00e1s, simplemente una l\u00ednea y ya est\u00e1 \"WC_GYUN_LOGGER\" y ah\u00ed tiene m\u00e9todos como alert, para alert, clear, para limpiar, critical, para mostrar critis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es una app m\u00e1s raro ya est\u00e1, no, no sea cr\u00edtica, no sea que sea un funcionamiento de.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, est\u00e1 de lo chulo que lo puede guardar, lo guarda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A m\u00ed s\u00ed me gusta meterlo directamente y as\u00ed lo guarda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfUna puntilla m\u00e1s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfS\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfNo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bueno, me ten\u00e9is por aqu\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si ten\u00e9is alguna pregunta de vosotros, me dec\u00eds.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Muchas gracias.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[aplausos] [Pitido] [Pitido] [M\u00daSICA] [M\u00fasica].<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Transcripci\u00f3n del video Buenas, \u00e9l es David P\u00e9rez, para que nos conozcan. Viene de la comunidad de Granada y b\u00e1sicamente es un crack, o sea, no hace falta ni presentarlo ni decir nada m\u00e1s, es que. es un crack, un aplauso, \u00bfno? (Aplausos) Bueno, vamos a empezar un taller. Yo quiero que sea muy pr\u00e1ctico, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4926,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":6,"footnotes":""},"categories":[169],"tags":[],"class_list":["post-3248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-charlas"],"_links":{"self":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/3248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/comments?post=3248"}],"version-history":[{"count":1,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/3248\/revisions"}],"predecessor-version":[{"id":5918,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/3248\/revisions\/5918"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/media\/4926"}],"wp:attachment":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/media?parent=3248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/categories?post=3248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/tags?post=3248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}