Conecta con APIs desde WordPress de forma Sencilla

<?php
/**
 * Plugin Name: Profile WordPress.org
 * Plugin URI:  https://close.technology
 * Description: Shows your WordPress.org Profile.
 * Version:     1.0.0
 * Author:      David Perez
 * Author URI:  https://close.technology
 * Text Domain: wporg-profile
 * Domain Path: /languages
 * License:     GPL-2.0+
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 *
 * @package     WordPress
 * @author      David Perez
 * @copyright   2023 Closemarketing
 * @license     GPL-2.0+
 *
 * @wordpress-plugin
 *
 * Prefix:      wporg-profile
 */

defined( 'ABSPATH' ) || die( 'No script kiddies please!' );

define( 'PROFWP_VERSION', '1.0.0' );
define( 'PROFWP_PLUGIN', __FILE__ );
define( 'PROFWP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
define( 'PROFWP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
define( 'PROFWP_API_BASE', 'https://wordpress.org/wp-json/wporg/v1/users/' );


add_action( 'plugins_loaded', 'profwp_plugin_init' );
/**
 * Load localization files
 *
 * @return void
 */
function profwp_plugin_init() {
	load_plugin_textdomain( 'wporg-profile', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}


add_shortcode( 'wp_profile', 'show_widget_profile' );

function show_widget_profile( $atts ) {

	$atts = shortcode_atts(
		array(
			'user' => 'davidperez',
		),
		$atts
	);

	$response = wp_remote_get( PROFWP_API_BASE . $atts['user'] . '/' );
	$html     = '';
	if ( isset( $response['response']['code'] ) && 200 === $response['response']['code'] ) {
		$body    = wp_remote_retrieve_body( $response );
		$profile = json_decode( $body, true );

		$html .= '<style>
			.wporg-profile {
				display: flex;
				flex-direction: column;
				align-items: center;
				max-width: 300px;
			}
		</style>';
		$html .= '<div class="wporg-profile">';
		if ( ! empty( $profile['avatar_urls'] ) && isset( $profile['avatar_urls']['96'] ) && isset( $profile['name'] ) ) {
			$html .= '<div class="wporg-profile-avatar">';
			$html .= '<img src="' . esc_url( $profile['avatar_urls']['96'] ) . '" alt="' . esc_html( $profile['name'] ) . '">';
			$html .= '</div>';
		}
		if ( ! empty( $profile['name'] ) ) {
			$html .= '<div class="wporg-profile-name">';
			$html .= '<a href="' . esc_url( $profile['link'] ) . '">' . esc_html( $profile['name'] ) . '</a>';
			$html .= '</div>';
		}

		if ( ! empty( $profile['description'] ) ) {
			$html .= '<div class="wporg-profile-description">';
			$html .= '<p>' . esc_html( $profile['description'] ) . '</p>';
			$html .= '</div>';
		}
		$html .= '</div>';

		return $html;
	}

	return $html;

}

Transcripción del video

Buenas, él es David Pérez, para que nos conozcan.

Viene de la comunidad de Granada y básicamente es un crack, o sea, no hace falta ni presentarlo ni decir nada más, es que.

es un crack, un aplauso, ¿no?

(Aplausos) Bueno, vamos a empezar un taller.

Yo quiero que sea muy práctico, a mí, los que me conocéis, me gustan cosas muy prácticas, 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ás 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áginas web le hago un WordPress, 100% pero cuando tengo que trabajar con entornos de desarrollo, de administración, de tal eso sí, verdad que ya no me lo llevo a WordPress, porque WordPress no está pensado tampoco para hacer, por ejemplo, backend de producción, me refiero a por ejemplo que haga gestionar un taller o una fábrica, por todo eso WordPress no está pensado para eso, si está pensado para ser la parte visible de esa empresa que si necesita alguna información de ese aplicativo, para eso está el API, que es lo que vamos a enseñar Entonces, cada uno a su terreno, Warprey es nuestro mejor acompañante para el tema de la policía.

Bueno, yo me presento muy rápido.

Yo soy cofundador de la agencia Closemarketing, que también tenemos una pata tecnológica, Closetechnology, que ahí también mandamos plugin y hacemos un poco de todo con WordPress.

Soy CTO, con lo cual llevo la parte técnica de la empresa y intento siempre llevar un poquito por delante a mi equipo para sacar los nuevos retos que hay de tecnológicos, todos los años siempre hay cosas nuevas y bueno, también estoy muy involucrado como habéis en la comunidad fui líder en la World Cup en Granada, estoy de organización de la World Cup en Europa está muy chulo este año en Atenas, os animo a que os vayáis del 9 al 13 de junio y es esto pero multiplicado por 10, pero cualquier World Cup entonces ya el año pasado fuimos a Porto y este año vamos a Atenas y está muy bien y entre mi tiempo que me queda pues soy director de una carrera deportiva que le hice por mi padre también me meto ahí en temas de colaborativos y cogemos fondos para darlo a una a una entidad no lucrativa y también me meto en Mita también me metí en la Work and Granada de este año así que anímo el 2 y 3 de octubre y ahí ahí muy bien y me podéis ver por twitter en @davisperospcmk ahora me metí también en Mastodon también hay que meterse en todo y bueno, en mi perfil y en la página web personal tenéis todo, ¿vale.

de hecho la dispositiva la tendéis ahí, ¿vale.

bueno, pues vamos un poquito a hablar de lo que es una API eh.

¿qué es una API.

una API es una forma de conectar eh.

bueno, se llama.

en sí es Application Programming Interface y es una serie de reglas y protocolos para poder interactuar con sistemas que tú no conoces que hay dentro.

Tú no sabes cómo está hecho, ni tampoco te importa y lo que te interesa es conectarte, sacar información, sacar lectura, escritura, puedes también escribir, puedes actualizar información y a partir de ahí utilizas la regla de protocolos que te define el sistema en que tú te conectas.

Si nos conectamos, por decir algo, a un CRM, pues yo tengo que ver la documentación, ver cómo puedo conectar, que puedo interactuar y puedo hacer.

Hacemos esa interacción.

Normalmente, no siempre, pero bueno, se hace a través de formato estructurado.

El mejor es JSON.

JSON es un lenguaje que está muy bien estructurado a las variables y es muy fácil de trabajarlo en WordPress porque tenemos una función que es «UVP JSON Encode» y cuando nos viene JSON, lo podemos.

«UVP» o sea, JSON Decode hay unas funciones que tú puedes codificar y descodificarlas y también está 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ás antiguo» PHP no lo gestiona igual, más rollo.

En la API normalmente ya trabajan eso.

Hay un tipo de autenticación, estamos leyendo datos sensibles y normalmente hay varios tipos de autenticación.

Entonces lo ideal es que tenga autenticación.

Cuando es un sistema público, que la práctica que vamos a hacer no hace falta ningún tipo de autenticación pues nada perfecto pues directamente la url leemos la información y tiramos millas y claro quien ha popularizado mucho la API pues las aplicaciones móviles y gracias a la aplicación móvil nos encontramos muchos aplicativos que tienen API porque claro para tener la aplicación móvil ahora ya no porque ahora ya también puede incluso programar la aplicativo con lo mismo que la aplicación móvil, bueno, pero normalmente suele ser diferente programación, cuando tú haces una aplicación móvil, el de móvil 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ás habitual, es hacer un programa una API, dásela al equipo de móvil y móvil se interactúa con el aplicativo, por ejemplo, yo que sé, un RP, un CRM, tienen aplicaciones móviles hoy día, pues todos lo hacen a través de API Otros ejemplos de API muy conocidos es el propio WordPress, tiene muchísima API y se hizo mucho más popular con el nuevo editor.

El editor de Gutenberg, los que saben, el nuevo editor que tiene WordPress trabaja con React, que es un entorno de programación 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és de API entonces gracias a eso pues la API también de WordPress tuvieron que la gente de PHP que se usan en más backend pues tuvieron que crear toda la programación 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ón, si no no puedo conectar, ¿cómo me puedo conectar.

, ¿qué autotica tengo que utilizar.

, ¿qué datos puedo leer.

, ¿qué puedo escribir.

, todo.

Y ahí te encuentras, bueno, los más grandes unos te mandan un PDF, otros te mandan el resumen, el resumen está muy bien porque te permite incluso interactuar sin haber programado nada con la propia API.

Entonces está muy bien porque le metes la autenticación de lo que pida esa API y puede interactuar.

Entonces pues bueno y aquí yo ponía algunos ejemplos de cosas que me gustan.

Entonces por ejemplo, Holder, no sé si se la conocéis.

¿Conocéis algunos Holders.

Pues Holder es un RP muy conocido porque.

Uy no, esta es mi de developers.

javascript, perfecto, me faltaba una «s» y este casi todos si os dais cuenta están hechos casi igual, os voy a poner dos que no tienen nada que ver una con otra y veréis que tiene developers.

javascript ¿Ves que se parecen, se parecen, tienen más o menos la estructura y es que esto Postman, que ahora os contaré 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ón la dan con Postman.

Entonces ahí le cobran a los clientes, a los que tienen la API.

Entonces aquí, por ejemplo, con Holders, pues aquí vemos todas las entidades, cómo nos podemos conectar las dedicaciones, como todas las entidades, puedes conectarte con los contactos, con los productos.

Es un RP, puedes generar productos, almacenes, los impuestos, la contabilidad de tesorería, aquí montos los pagos, los documentos, aquí 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.

Según el aplicativo, pues entonces pues bueno aquí 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ón, pues esta es la URL que tú tienes que trabajar, bueno esta es para conseguir la autenticación y a partir de aquí ya empezamos a trabajar, pues mira si quieres listar contactos tienes que utilizar el método Get, ahora os voy a explicar lo que es con este URL, incluso aquí te viene si le pones una API key puedes intentarlo, incluso te permite generar el código, incluso aquí tienes para sacarlo con PHP, que ahora voy a decir que esto no no uséis esto, vamos a utilizar lo que que da Warp es que está muy muy bien y es mucho más sencillo.

Aquí te dice que instales una librería y que a partir de cojas una clase y haga un método get eso ya no hace falta en Warp, ahora explicaré por qué.

Pues podemos crear un contacto, aquí se puede hacer de todo.

Entonces, la documentación, importantísima.

Antes de poder conectarlo, dame tu documentación.

Normalmente los software, casi todos tienen una API, no sé si se me ocurre, y todos tienen también incluso una sección para desarrolladores.

por ejemplo Spotify por ejemplo, ¿yo puedo interactuar con Spotify.

pues sí perfectamente si ponemos Spotify, developer, aquí tiene una parte de developer, casi siempre se utiliza developer, developers y aquí te dice para que tú interactúes con Spotify.

Por normal general los sistemas los software en la nube tienen API casi siempre.

De hecho yo a los clientes cuando me van a contratar una herramienta de cualquier tipo le digo si después 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án en la nube o si están en la nube y no la han hecho, te pueden encontrar sorpresas.

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.

Entonces lo mejor es tener una API que tú puedas interactuar.

Cuando vosotros también hay que interactuar con ese sistema, pedir siempre la documentación, la documentación, cómo puedo autenticar, cómo pueden interactuar.

Y una vez que tenemos esa autenticación, pues tenemos que hacer pruebas antes de empezar a programar.

Lo que tenemos que ver es la entidad, qué tipo de información nos facilita, cómo la puedo procesar y todo esto.

Entonces, pues hay muchos clientes de lectura de API.

Antes de seguir un poquito, quiero conocer un poco, a ver quiénes son los desarrolladores, ¿habéis programado alguna vez.

¿Todos son desarrolladores.

¿Por aquí no.

Aquí más o menos.

Perfecto.

¿Y tenéis el tono de desarrollo local.

¿Sabéis trabajar con el desarrollo local.

Perfecto.

Pues dentro del local local, tú te puedes instalar una aplicación que se llama Pongman, yo es la que utilizo, es gratuita, te la bajas, te la descargas y también incluso si utilizáis Visual Code, el editor de Visual, tiene también extensiones como ResClient, había otro que era Octopus, hay un montón, o sea que realmente este me parece que es Octopus, realmente que utilicéis el que queráis, que sea más cómodo, probarlo y como son extensiones de VisorCo, por ejemplo, que te la puedes borrar, pues nada, sin problema.

Yo empecé con Pongman y ya me he quedado porque traerme todo, ahora veréis mi carpeta de Pongman, que tengo el más grande, traerme toda esa información a reprogramarlo porque simplemente este tema integrado no me merece la pena.

Yo trabajo con Pongman, tiene una interfaz sencilla, aquí tenemos lo que son como como carpeta, aquí como veis tengo aquí unas cuantas integraciones hechas y aquí tengo una que se llama WordPress, yo incluso puedo tener otro WordPress y puedo interactuar con el mismo WordPress y aquí de hecho he hecho un ejemplo en el que yo aquí pongo la URL, ahora vamos a ver qué significa la cosa.

Y con la autenticación, porque claro yo no puedo leer productos, depende de cómo tengas configurada WordPress, pero yo lo de aquí a send y simulo una petición API en tiempo real y me está dando una información real.

Aquí como veis tengo software de VoIP, de todo un poco.

Entonces yo puedo interactuar y recoger esta información.

Aquí por ejemplo me está dando una petición, le echo yo de productos y como no le he especificado nada me da todas las productos y aquí pues sacará lo más grande.

Esto también hay que trabajar la paginación, normalmente el API no te manda toda la base de datos de las páginas entonces tú lo que haces es un recurrente y va haciendo la paginación.

Aquí como veis me da un ID, el 1904 con una fecha, aquí ya estás viendo en este interfaz ya estás viendo cómo te da la fecha y ya partiría la manipulación.

La fecha a mí me gusta guardarla en numérico pero si me la dan así pues yo la normalmente la trato y la paso a SDRTutime le digo pásamela en numérico y ya la puedo trabajar.

Aquí te dice cuándo fue la modificación, el SLU, de esto es una entrada de un producto de Clos Technology.

Aquí me sale incluso el link, el contenido, fijaros aquí está el contenido metido, nos lo da el renderizado, que pone aquí renderer, y bueno incluso escapeado, si veis aquí 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.

Pero bueno, ya estás viendo aquí cómo está estructurado y aquí estás viendo que hay dos niveles.

Yo tendría que hacer el array y el std y luego a partir de ahí tendría que coger, esto me lo convirtiera en un array de doble nivel, entonces yo cojo este y este para poder coger esta información.

Entonces ahí estoy viendo los niveles también del JSON.

Entonces lo normal para cuando coges una API, primero ver la documentación, metértela en el postman y empezar a ver la documentación y hacer una simulación.

Le hace una petición, le mete la autenticación y le da enviar.

Ahora vamos a ver que hay distintas peticiones.

Estas son las peticiones que puede hacer la API y aquí el GET es recoger, dame los productos que tiene la tienda.

Entonces, si yo tengo una aplicación móvil que quiere conectarse a mi tienda, pues nada, pues yo haría esta petición para poder escoger los productos y señalárselos al cliente.

Evidentemente, si es una tienda online y tengo el móvil, por lo mejor no me interesa sacar todo el contenido con la imagen destacada que estará por aquí también, que a veces se llama «featured», mira, «featured media» y me la da por ID.

Aquí, por ejemplo, estamos viendo que yo tendré que hacer una segunda petición 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é en WordPress es decir voy a hacer un recorte para el móvil y lo recojo por API y lo enseño, vale entonces al final con podman que yo el que utilizo interactúo veo lo configuro incluso aquí os da un código vale toda la herramienta viene con el código pero ya digo que no que no que no es útil en el sentido aquí por ejemplo le da un cúr y si lo pongo es que como no lo hizo nunca ahora aquí pues puedo decirle pues dame PHP, PHP concur, fijaros todo lo que me manda de.

pues esto en WordPress son tres líneas, si te ahorras todo esto que es PHP nativo, o sea esto funciona en PHP nativo pero si tú mandas el plugin a WordPress veréis que no te lo aceptan, tienes que utilizar las peticiones nativas Entonces, tengo documentación, tengo el cliente para interactuar y recojo información, veo cómo me trae la información y ya la trabajo.

Estas herramientas son fundamentales para poder ver qué te da la API antes de empezar a hacer nada de programación.

Muchas veces te dan una documentación, no está actualizada y antes de empezar a programar tienes que probarlo.

prueba y dice «Ostras, pues no me ha dado. oye, pues mira, la antetecación 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í tenemos una serie de peticiones que los propios nombres más o menos son descriptivos get recojo información, leo, entonces yo hago peticiones get para leer información como habéis visto por una tienda leen los productos, las imágenes destacadas, todas las peticiones Put, ¿qué es Put.

Es actualizar.

Si yo recojo un.

si hago otra vez el ejemplo de la tienda móvil de mi.

de esa tienda de aplicación móvil.

Yo hago un get de productos y le he puesto un administrador aquí para que pueda cambiar la información del producto y ya tengo un ID, ¿vale.

El Put con un ID normalmente actualiza la información.

Yo la que cambio, pues voy a cambiar el título, lo voy a guardar.

Lo que hace es, le hace una petición Put con un ID, normalmente todo eso va en la documentación y le meto la información que yo quiero actualizar ¿Por qué digo que este no es del todo habitual.

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én si le doy una id en esa petición hace como si fuera un put, entonces ya depende de la argumentación pues la encontraremos si tiene post y get o también te pone put, para ser más estricto es mejor put porque así te está diciendo que esto es una actualización, lo estás como forzando, o sea que si tú no le metes una idea al put pues te va a dar error, en cambio si tú no le ponen idea en post te va a crear uno nuevo, una nueva cantidad, lo que sea, un contacto, un producto, etcétera.

Entonces, ya digo, depende del API, como hayan programado, los más exactivos y más tal, pues te suelen poner una petición puro, para actualizar el contacto.

Más 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ón externa salvo que sea necesidad del proyecto porque puedes tener un forage y te equivocas y empezar a mandarle.

Normalmente el delete si tú le das una ID como el put, pues elimina la entidad que tú le digas.

Normalmente tendrás que especificar la entidad que quieras modificar, por ejemplo un contacto y un ID.

Entonces tú le dices esas dos cosas y te ahorra la entidad en el aplicativo.

Y patch es también, dependiendo de las peticiones, el actualizar.

Pues hemos visto la función, como veis, que es bastante suboptiva.

Esta es de un CRM, se llama Clientify, y aquí le estamos pediendo un GET de toda esta información.

y aquí incluso tengo la actualización, un toque, ¿vale.

No lo vichéis porque no existe, no es real Vale, entonces yo le estoy haciendo una petición GET de este toque, y entonces ¿qué pasa.

que me va a dar aquí un resultado, response, que yo aquí ya lo podré trabajar, ¿vale.

Entonces, vale, aquí como veis, me genera ese código, podman, rest client o cualquiera, no cumple los WordPress Coding Standard no sé si conocéis algunos lo que son los WordPress Coding Standard, aquí 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í nos dice para tener mismo estilo a la hora de programa.

¿Por qué.

Porque por varios motivos, por seguridad, por leer el código de una persona y que lo pueda leer de una forma normal y entonces todas esas reglas te las puedes instalar.

Yo lo animo a que investís un poquito más en mi blog o como yo documento cómo lo hago y lo pongo en mi blog.

Si lo buscáis en Coding Standard os digo cómo lo instalo en mi ordenador.

lo meto en el editor y me va diciendo como si fuera un corrector de autográfico que tú vas cambiando lo que son las definiciones.

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.

Que si tú lo pones y sigues hacia adelante no pasa nada, pero si tú ese plan que tú 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ódigo estándar 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és que te la devuelvan, pues vamos a trabajar con código estándar y aquí vais a aprender directamente, entonces por eso yo decía que el Postman cuando me da un código no lo veo, yo veo la dedicación, veo que funciona el API y ya me pongo yo a programar y de una forma muy sencilla que os voy a enseñar y luego en el ejercicio lo vamos a ir viendo para que vosotros podáis programarlo.

Tenemos unas funciones definidas en WordPress, habéis visto que teníamos cinco peticiones tipo de API pero no hay funciones para cada una de las porque no sé, la verdad, pero tenemos esta siguiente, tenemos «wp-remote-request» que decís bueno, el «request» no, no había dicho tu petición de API, no, esta es la genérica, que dentro del argumento, y os voy a enseñar el argumento, le podemos decir qué tipo de petición, si es «get, put, pull» o «sapatch» o «post» o «delete» o lo que queráis, 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ón, le llamo API y cualquier cosa y entonces en esa función dentro va el «upremoteRequest» y en la función le digo el parámetro que quiero utilizar si es «get», «spot» y etcétera.

Pero hay veces que en la programación, si simplemente necesito el «get» porque es una app pública que podemos utilizar, vperremote.

get que los argumentos son más sencillos porque no hace falta poner el método en este sí 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.

te devuelve lo que son los datos igual aquí los argumentos veremos cómo hacer los argumentos para que esa autenticación, esas cabecera, ese body que tenemos que hacer peticiones porque hay veces que dicen pues mira mándame los productos últimos modificados ¿cómo lo haría.

pues con los argumentos que yo le mando aquí, leyendo la argumentación me dice mira mételo 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ás 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í 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és a repasar de verdad que me lo encuentro muchas veces y el modifier sería una petición muy sencilla de dame la modifier de la última 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íe porque he mandado ticket en mi puñetero caso y digo mira que es que además de hecho te viene el producto y en el modifiest no está 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ías o entonces no tienes nada que ver una cosa en otra, o sea un pequeño desastre pero bueno salvo sorpresa normalmente en el Remote Get es Modify bien estupendo por ejemplo si pues si quisiéramos «mira quiero actualizar mi tienda online cada hora o cada 15 minutos» con el Modify lo podríamos hacer porque tú 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.

Remote post igual cuando yo quiero mandar información por lo mismo, la url, el argumento, etcétera.

Y remote GA, esta no la utilizo yo, utilizo esta normalmente o una de estas dos.

Para PUT, para patch no hay, o sea hay web remote y etcétera.

Entonces, ¿qué tenemos que irnos.

Si el API me dice «para actualizar un contacto, tenéis que utilizar el método put».

Pues tenéis que irme aquí a «remote request» y el argumento es decirle el método put.

Aquí, bueno, mucha teoría, pero ahora entramos a la práctica.

¿Qué argumento suelo utilizar yo en esos argumentos.

Que es un array, que me va pidiendo distintos argumentos o os pongo vamos si ves la documentación no te dice mucho y normalmente yo aquí os cuento para que os sirva os pongo directamente las peticiones que solo yo utiliza más vale y de hecho voy a dar que eso me ha costado un trabajo de años 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ón básica un nombre usuario y contraseña, pues yo digo lo que más he utilizado yo, ya vais probando el que decía, el method, si es un array, sería method = flecha entonces aquí podemos decir el tipo de petición HTTP solo se utiliza en esta función, en Google Play Remote Recuerda cuando me piden métodos tipo PUS, DELETE, etc.

Timeout, por defecto ya es la función, si no le pones Timeout no te coges una por defecto, es un 10 segundos o algo así es por si la API tarda mucho en contestar o eso suele ser, los tiempos de contestación suelen ser también muchas veces cuando pedimos muchos datos cuando la API no me trae paginación y le digo dame todos los productos, te manda 10.

000 productos, pues claro no es lo mismo que te lo devuelva en paginación de 100, que te lo devuelva, bueno no te traen tantos pero bueno entonces ya depende un poco cómo funcione pues tienes que ponerle más 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í, aquí está con sorpresa, esto no lo ponéis y ya está, funciona perfecto pero si encontráis una vez sorpresa de que no te contestáis 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á trabajando con datos de APIC sin SSL pero bueno, no está, 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 ¿me puedo encontrar la autorización en el body.

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és la api que me da la autorización y también le suelo forzar el content type que sea JSON, creo que que decías, este es el que más o menos se maneja porque tú te lo traes, lo conviertes enseguida a un array y a los gestiones lo manipulan.

Y el body suele ser cuando, lo que decía por ejemplo, quiero traerme los productos modificados en la última hora.

Normalmente ese tipo de query que se llama, o peticiones, las suele hacer en body.

Lo habitual, todo otra vez os digo, depende de la API.

¿Y tipo de autenticación.

Estas son las cuatro autenticaciones.

La que yo me suelo encontrar casi siempre, en un 90% es la APIKey.

Es, Holder lo tiene, casi todas las tiene.

Entonces, normalmente suelen darte una sección de desarrollador y te dice «Mira, entre en esta sección del desarrollador» y te damos la constante, la clave para poder interactuar Esa es la más 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ásica No sé si vais a dar cuenta que desde.

No sé, una versión, seguro que sabéis que sale mucho más de la versión pero a partir de una versión dieron una opción de que dentro del usuario tú tenías el usuario y la contraseña tenía aparte otra que se llama app password o bien no se le da cuenta y esa es una contraseña diferente para que tú aunque cambies tu contraseña como usuario pueda seguir interactuando porque la aplicación de gd funciona si le pones si le cambia la contraseña entonces puedes trabajar una de las dos y el token beater, esta es la básica de usuario y contraseña apiqi, una chorizo que te ponen de string y el token beater suele ser que tú le haces una básica, 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ías o cosas así Entonces, yo lo que suelo hacer siempre, pues, cuando empiezo la petición primera, le hago una básica y el token mire y ya luego la siguiente la hago con el propio token, ¿vale.

Y el OAuth, que no es muy habitual, pero esta es la del Google, por ejemplo, ¿no.

Que es lo típico, que te va a una página de autorización, la autoriza y te vuelve otra vez a la página.

Entonces, tienes que programar, pedirle a la aplicación que te genere esa página de consentimiento recibe el consentimiento y ese consentimiento nuevamente te devuelve un toque en vida.

Que ese ya lo tienes que almacenar en base a datos para poder trabajar con él.

Ese lo hago, pero es el que menos me encuentro.

Salvo que interactúes con Google para hacer todos los servicios, pues tienes que trabajar eso.

Es un poco rollo porque tienes que hacer programar una URL y dársela a Google.

Estoy haciendo el ejemplo de Google.

tienes que darse a Google para que te devuelva esa aplicación y la guardas y la devuelvas ¿vale.

y entonces ya en esa página que suele ser la de.

¿todo está correcto.

pues va a trabajar ¿vale.

¿y cómo se programa eso.

en WordPress ¿vale.

pues en esos argumentos que os decía dentro del VPN Remote yo suelo trabajar esto ¿vale.

entonces bueno solo, los trabajamos.

Aquí he metido el SSL Valify, esto está mal hecho pero bueno lo he puesto para que estuviera en ejemplo.

Y aquí estoy haciendo una petición con un argumento, con una cabecera que estoy diciendo «trabajame Jason» y esta es una aplicación que te está diciendo que tienes que darle un clean ID, un clean secret, un usuario y un power.

Y el GrandType es Power.

Bueno, ya está, ¿Se le ha programado así la aplicación.

Pues ya está, yo me conecto Entonces me suelen dar Esta por ejemplo, la aplicación, que ahora recuerdo un poco lo que era Me daban esto, que lo metía yo en una constante O lo guardaba en base a todo, tal, esta si era fija Y esta el usuario y contraseña la metía yo por.

el usuario me la tenía que dar Entonces, pues aquí en estas cosas lo que solemos hacer es una página de ajustes Y en esa página de ajustes hacemos dos usuarios, mete aquí tu usuario y contraseña para poder conectar tu aplicación entonces por eso lo guarda en base de datos, le hace un getOption y cortando me quedó muy rápido y no sé si le hago un getOption y le recojo la usuaria contraseña que me guardaba en base de datos y aquí le estoy diciendo no utilicé SSL, esto está muy mal, pero en este aplicativo me hacía falta y un timeout de 50 veces o un segundo vais probando porque como las propias peticiones cuando tú las haces te van dando las respuestas pues tú vas viendo si tiene errores si no tiene errores, tarda mucho, tarda poco, pues ahí vais probando.

Otro tipo que está 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ña usuario, dos puntos, contraseña.

Con esto ya podéis conectar a otro WordPress y ahora vamos a ver el resto del código.

Tengo como recordáis una URL y unos argumentos y ahí tengo mi petición de argumentos.

Cuando me da un API key, pues estos son los argumentos.

yo hago aquí la cabecera, le digo la turización, le pongo un toque en espacio y la api aquí, este texto que es el tocho que habéis visto, lo meto y le meto un timeout porque el que me viene definido por la función pues es muy corto, pues le pongo 20 segundos y aquí con esto pues ya me estoy identificando con otros WordPress y por ejemplo algún 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í lanzo un vp remote en un post y lo mando a la información, entonces por querer el usuario y lo que lo hago etcétera, y el token vira es un poco más puñetero, pero bueno tampoco al final es pedirle una básica que esta, esta es parte de una función completa entonces yo ahí para no repetirme la directiva drive que intento llevarla mucho que es «don’t repeat yourself» si no te repites continuamente tengo una función API entonces si yo no le mando las credenciales del token, si no están vacías a eso si no están vacías el token pues utilízame el token que tú tienes guardado en las credencial y me hace una autorización de tipo vira y si no está me hace la.

por eso tengo que hacer esa función o tengo resultados veces cuando es una petición por ejemplo de la ex producto por ejemplo tengo que decirle pues mira cogemos el usuario de contraseña, aquí me hace un terenario de las creencias de uso en NAMI y dame la vacía y codifico esto en el body.

Este API me pedía que la codificara en un body.

Pues nada, yo lo codifico y le mando y entonces me devuelve un VIRS y este VIRS lo vuelvo a utilizar.

Repito y te digo más veces, esta es una forma de tenerlo todo agrupado en una sola petición y lo que hago es ejecutar la función dos veces.

No os preocupéis que ahora vamos a verlo en la práctica y qué pasa una cosa que imaginaros que tenemos un pie de página 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ú le puedes decir oye este es el video verde entonces tú le das dominio y te lo dice hay una API para eso imagina que yo lo tengo en el pie de página entonces cada vez que un usuario si no está cachada, cada vez que usuario vea esa página está haciendo una petición a la API, las peticiones a API suelen ser lentas, no suelen ser rápidas hay unas más rápidas, unas más lentas entonces las peticiones, fijaros que le estoy haciendo el usuario hacer una petición API continuamente por un lado la API me va a decir «me estás 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é, eran 20 por ahí, a partir de esa 20 te bloquean como 2 o 3 minutos.

Si tú estás 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ágina y le estás pediendo demasiadas veces una misma información que tú ya la tienes almacenada entonces ¿cómo se hace esto.

pues hay un invento muy bueno de Warp que se llama Transient ¿qué quiere decir Transient.

que es una forma de caché información con una caducidad yo le digo guardame por ejemplo vamos a otro ejemplo los productos guardame los últimos productos modificados y si yo quiero enseñarlo después en el frontend varias veces pues yo trabajaría con el transing y guardaría los arrays de los ids o incluso la información 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ódigo de Transient, entonces voy a enseñar no solo pedir peticiones al API sino guardarla y cachearla y ya mostrarle al usuario cuando yo quiera entonces, ¿cómo se suele hacer una petición API.

pues hago mi función, los argumentos ya os los he dado, con una URL API y hago un.

utilizo vprimotget, aquí por ejemplo he hecho la petición 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ú le haces un printr al response, te salen las cabeceras, raw bodies, todo, entonces tiene una función 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í voy viendo que me va Normalmente suele dar una respuesta del código, te dice «mira, la petición HTP 200» pues te devuelvo la información y aquí la tienes y te da un array.

Entonces ya a partir de que de esta tercera función ya puedo trabajar lo que es la información que me ha dado la API.

Ahora vamos a a ver un poquito en tiempo real y ya que trae los portátiles vamos a ver un poco cómo se hace, vale, con estas tres funciones devolvemos ya el body response, este ya empezaría yo a trabajarlo, entonces que suelo hacer yo normalmente, pues hago una función que se conecta con mi API, le hago los argumentos, le hago estas tres funciones y a partir de aquí las devoluciones son devuélveme un error o devuélveme un ok con todos los datos que yo necesitaba y aquí yo enseñaba el transient que lo vamos a ver también lo que hace es, y además lo utilizamos en el profile, porque ahora vamos a hacer un plugin que va a hacer expeticiones a WordPress.

org y nos va a mandar la información del profile de de nuestro usuario.

Entonces, si yo lo pongo en mi página web, lo que decía otra vez el ejemplo, lo pongo en mi pie de página, pues voy a empezar a hacerle peticiones a WordPress.

org y llegará un momento, la mayoría de las veces lo que hacen las APIs es que te bloquean, tienen una serie de peticiones, entonces si tú haces muchas simultáneas.

Entonces lo que haces es cacheo, te hago una petición cada tres horas.

Esto es lo que hace, os explico.

Get Transient con una key que tú puedes hacer la que tú quieras, la sintaxis esta es la que tú quieras que tú sepas.

No metáis solo utilizar un prefijo, el tipo de consulta y el tipo de información.

Con esas tres así para acordarme.

Pero aquí podéis poner Manolo, Pepito o lo que queráis, eso da igual entonces esto te devuelve o la información o un false, entonces si es false en esta línea haría el vprimodget, vprimodget, porque estamos haciendo lectura y la metiría en esta variable y la guardaría con esta key, con esta información y durante un tiempo hay unas constantes en wordpress que quita diciendo horas en segundos por tres, o sea tú puedes poner aquí lo segundo.

Entonces, ¿qué hace el tránsit en la práctica.

Es yo leo la información de esta variable, me la devuelves, ¿qué han pasado las tres horas.

Hace petición de API.

Entonces, el primero que ha pasado de las tres horas hace la petición real de API y todo el resto de gente le sale donde sale con el con la tu propia cachéos con lo cual tú estás trabajando con tu formación local que siempre es más rápida siempre o no lo mismo que tú le das base a todo que tú tengas que pedir un sistema te recoja la información las manipuladas las tránsit súper importante y para este ejemplo lo más a ver y yo voy a estar la teoría está más o menos bien cómo va y no me habéis interrumpido, la habéis cogido todo.

Vamos a trabajar si queréis sacar los portátiles y vamos a ver un poquito qué vamos a hacer.

Se ríen, por ahí se ríen.

Vamos a ver, yo para este ejemplo he hecho un plugin, aquí no voy a.

bueno, también entramos al detalle, aquí tenemos la oportunidad.

He hecho un plugin que va a conectarse al WordPress y me va a mostrar por el perfil de WordPress.

Una cosa chula que podría tener esta pizzería que me diera las medallas, o sea que yo pudiera por ejemplo tenerlo en mi página web de personal y y se vieran todas las medallas que tengo yo conseguidas por la interacción con la comunidad, pero no lo da.

Vamos, aquí está la información que nos da.

Vamos a verlo aquí, tomo más de tiempo, una horilla.

Oye, ¿ya me he comido una obra.

Vale.

Si es que me encanta, me voy.

¿Este pasa aquí.

ah vale porque esta petición no tiene.

esta petición de WordPress a ver si puedo conseguir la documentación es que me la dieron las peticiones API de WordPress están muy escondidas y aquí está sí aquí está en user fijar hasta la documentación que yo tengo de WordPress y si entreis REST API Handbook, aquí están todas las peticiones.

Podemos por ejemplo incluso sacar peticiones del plugin.

Cuántas descargas hay, un montón de cosillas interesantes.

Bueno, las descargo un tiempo que las quitaron y tal.

Entonces aquí tenemos el endpoint.

¿Qué quiere decir el endpoint.

A ver si me hablo explicarlo.

Cuando tenemos una petición API, 100% de los casos tenemos una url base, que es por ejemplo api.

dominio.

com/laversión porque es importante porque si nos dice a presionar la API puede ser que tú crees cambios en la API y dejes de funcionar aplicaciones de muchos usuarios.

Entonces es una buena práctica que ponga /v1/v2 para que el desarrollable de tiempo que si tú has lanzado una nueva versión de la API te dé tiempo a modificarla.

Cuida a los desarrolladores, siempre nos gusta que nos cuiden.

Por lo menos les pedimos «Dano versionado» que si tú sacas una versión 2 yo me dé tiempo a programarla y trabajarla pero que la v1 siga funcionando.

Pero ahí asiente y te la encuentras otra vez que no.

Aquí me dice que puedo utilizar la versión de user y aquí dice el esquema, va a estar una documentación que da así WordPress y te dice mira si me da el ID, el identificado del usuario, el username, fijaros aquí esto lo que devuelve creo yo que es, aquí está el list user, entonces te dice mira puede hacer una petición que sea /vpv2user esta es la de Warp.

reg, no la de Warp.

reg pero bueno, me sirve para el ejemplo y aquí puedo saber los usuarios de una fijaros que Warp hace el versionado, aquí pone v2 entonces si Warp hiciera una nueva petición, o sea, una nueva petición v3 por lo de suelo no derrida de tiempo, poná más la v3 porque seguramente las peticiones son más rápidas, tiene más argumentos, etcétera evidentemente se hace una nueva versión por algo.

Entonces yo en mi ejemplo que os programaba aquí yo tengo aquí mi url que es warpress.

org/wpjson/wporgv1use.

Esa es como la url base.

De hecho lo he guardado yo aquí en una constante porque no se va a modificar.

Aquí fijaros que aquí lo que he hecho es Aquí le he dado la traducción y he hecho un shortcode Aquí no íbamos a poner más cositas Lo que he hecho es meter un shortcode que se llama «webprofile» Este código lo dejaré en el este para que lo podáis trabajar Es un archivo PHP único para que no compliquen la vida en más cosas Os explico el código que he hecho este sería web profile y va a ejecutar esta función con unos atributos el atributo, si no quiero más recordar, aquí tengo que decir chiclana era user, user igual a no sé qué 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í le pongo que si no me has puesto ninguna que dice «davis perez» y entonces, como ésta no necesita tu aplicación, no necesita query, no necesita nada hacemos un «upremote» directamente a la url y como veis aquí en la coma no hay argumento no hay cabecera, no hay nada entonces le estoy diciendo, sácame la url con el shortcode Sería todo esta URL warprep.

org/vpjson/v1user/davisperes que si navegamos a esta URL que la tenía por aquí 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é que será, pero yo tengo ya un ID aquí Me da mi nombre, que es el que yo he puesto allí, me da mi URL y me da mi descripción, el enlace, un Slug Me da los distintos avatars en distintos formatos, en 24, 48 píseles y 96 píseles me da un meta vacío y aquí me dice HRF Self y un Collector, que yo creo que se llama igual pero bueno, en la documentación no explicará un poquito más, pero bueno aquí se ve que está la URL y aquí está la.

este JSON es el que yo tengo que trabajar, esto es lo que me da, aquí estaría guay que me diera las medallas que pusiera aquí como se llama las medallas eran batches y entonces te diera la medalla entonces podríamos hacer en propio que este plugin sería 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ñar resultados entonces claro yo ahora estoy trabajando con con esta petición le hago un remote y aquí devuelvo un response code y si me sale 200 recógeme la información.

Aquí, a lo mejor, tenía que haber trabajado un «iset» para que no me dé fatal error.

Los arrays que no tienen un definido una «key» aquí me estoy yo corrigiendo Aquí me dice si está definido esta variable y es 200 sigue pidiendo información.

Hacía en Key Profile, le coge la información del body y lo decodifica.

Esto ya, el Profile es un Array, del JSON que veía y un Array.

Y vamos a verlo ahora, en un rápido.

Aquí le meto un estilo, ya os digo, esto es que era un peche peche, está mal hecho porque los estilo se suele hacer en colan y todas estas historias, pero para el ejemplo no quería yo meterme en más archivos y más en colas.

Entonces le meto aquí un estilo ahí jacodeado, esto no se puede hacer, pero no se debe hacer, pero lo he hecho para que se vea.

Y ya empiezo a trabajar con esta variable que es la profile que me viene del API y ya empiezo a hacer.

Importante trabajar con «iset», importante, porque sino mostráis fatal error en vuestro código.

Una muy típica es, «iset», o sea, si está definido ese array y tiene valor, es sencillo, lo puedes hacer rápido con «empty».

«Empty» es un «iset» también dentro, entonces si no estuviera definido te daría un falso, pasaría a siguiente entonces lo que yo le digo es si no está vacío la url va a avatar que habíamos visto el giso enséñame la avatar y aquí utilizo el 96 y aquí igual si no está vacío el profile name entonces yo voy enseñando la información y la voy mostrando y aquí he cogido pues la url vale aquí por ejemplo también tendría que decir si está definido esto para que aquí por ejemplo, vale, no, perdón, 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ú no puedes estar supeditado a que la API te dé una información u otra, entonces tú mejor, oye, ya que estoy tocando este array, vamos a comprobar lo que esté definido y entonces ya lo ejecuto.

Entonces le hago un echo y le hago un tar.

Aquí como es un short call lo que hago es un return HTML.

Entonces este es un sencillo, el avatar, el nombre y el descripción.

Vamos a ver el resultado.

Aquí no he trabajado el transing y vamos a hacer un transing para no machacar la API, entonces yo creo que aquí está, 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ón.

Esta página, imaginaos que la tengo mi página de Davis Perez Gar, porque quiero enseñar mi perfil de WordPress, etcétera, y empieza a ponerla.

Entonces empieza a hacer peticiones, lo que yo quiero es esto cachearlo, para que no haga peticiones a la API.

Entonces, ¿cómo lo haría.

Pues con el tránsit, como ya hemos visto.

Yo aquí tengo un truqui truqui que es.

claro aquí veis que le hago un remote que es, vale.

entonces yo lo que haría es hacer un antes de hacer la petición API cachearlo con el trance y ver que tenga una caducidad y ya lo muestro, vale.

y si no me hace un remote que es, vale.

entonces por aquí vp atrás, yo que tengo aquí un.

entonces le digo, VPOR y la variable, perdón, VPORG, la variable que sea user, «vpUser» entonces, el «transient» yo le diría «getTransient» ¿lo veis.

me parece que se ve poco, ¿no.

no habéis quejado, ¿eh.

estáis callados, no sé si os estoy aburriendo ¿estáis asustados.

están asustados, que sí le hago un «getTransient» de esta variable que yo me la he guardado así 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ón.

Entonces yo lo que haría es.

aquí rápidamente.

bueno no.

a ver, para hacerlo bien lo que tendría que hacer es guardar la raíz del profile, o sea tendría que cachear esto entonces lo que haría es.

un de estos.

aquí.

y un de estos.

así rápido, vale, entonces yo guardaría realmente el profile, que es el array de mi usuario con una caducidad de tres horas, entonces cada tres horas la primera petición siguiente haría una petición API y la guardaría en mi cache que es «web org query user» y a partir de aquí ya empiezo yo a hacer comprobaciones, ya le hago lo del HTML y todo eso.

Entonces si si da alguna vez error, pues mostraría vacío.

Siempre tenéis que cuidar mucho el tema de la.

Voy a quitar el tránsito.

Le cuidar el tema de las errores fatales y todo esto porque podamos crear tragedias en páginas 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án los JavaScript, o sea que te puedes cargar páginas web si no trabajas con lo Icer, en lo Array y en lo Enty cuando queramos definir valor.

No sé, Spotify tiene aquí.

¿Pasa de Spotify.

El estudio hecho en multitud de documentación.

Mira, web, APIs, mira.

por ejemplo, aquí podría yo enseñar con esta API la lista de mi música y la podría enseñar en mi página 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ágina web página web, pero los iframes no posicionan, no guardan el SEO, entonces puede ser que deje de mostrar información a Google porque el software no te ha dado la información bien entonces la app y también el SEO muestra información del aplicativo en mi página web y posiciona, los iframes no posicionan, vamos de tiempo entonces eso claro el app y también ayuda al SEO, porque te muestra estos planos que tú después la puede utilizar.

Cuando no tienes documentación de la API, ¿podrás hacer algo como pasar a por los WSEDS y hacer una petición para que se vea.

Se que de todo, se que de la selva.

O no hay manera.

Sí, sí, hay veces que la propia API, cuando tú metes la URL, te da como una petición.

Hay veces que sí.

Pero es que está preparada la API, ¿no.

Sí, sí.

Sí, sí.

¿Por eso te refiere a una lista de Mero.

Sí, método, sí, te lo tienes que dar de alguna forma.

¿Y si lo han desarrollado así.

¿Y para el list.

Sí, había alguna API que tú le daba un parámetro y te daba la.

Ha sacado una IA, que es bastante producida, pero.

Al final, el micro se ha olvidado.

(Pedidos) (.

.

.

) Solamente se les hace la URL.

Claro, primero que se hable la URL, que si no, no te la puedes inventar.

Y claro, aquí por ejemplo, aquí te dice «require HTTP».

Estaba viendo aquí si encontraba yo algo.

Este está dando el código para hacerlo a través de.

.

.

Aquí te da aquí alguna opción, etc.

Al final, las de WarpPres, por ejemplo, aquí tiene.

.

.

Pues no sé decirte, vamos a probar un día para hacer la prueba y si nos dejara.

Si le ponemos esta base.

.

.

Mira, justo aquí tiene el ejemplo.

Fíjate, le he dado la URL de base, la de WarpPres.

org y me está dando, esta es la versión 1 del API y aquí tiene los endpoints, que son las peticiones que puede hacer tiene por get, tiene métodos get ah mira, aquí está, este es el que utilizaba, el user Aquí tiene user, entonces si me hace petición de www.

warp.

org/v1, aquí, si hace esto, /vuser, aquí te va a encontrar un argumento, ya te vas leyendo, sí, más o menos se entiende, ¿no.

Sí, el argumento.

Paginada, ocurre en página de collection, que es por defecto de uno.

Claro, si tú te dices algún usuario no vas a tener paginación.

Per page, para que tú puedas manejar la paginación.

Esto está bien, porque tú dependiendo de tu aplicativo, si a lo mejor estás haciendo.

.

.

Pero hecho que esto no lo lanzan todos en las ambiciones o.

.

.

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éis que he hecho rada, yo podría darle una petición modificada en la ultima hora así no lo tiene pero es un montón entonces que tenes que hacer pues eso, buscarte la gente pues eso, buscarte la vida como hacemos todos.

Te traes toda la base de datos, te traes con lo ineficiente que es porque la API tarda más, te traes toda la base de datos, la gestión, yo también he hecho por ejemplo tablas intermedias, que hago, a ese Hordes por ejemplo no tengo lo último de FICA, ¿cómo lo resuelto.

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ón le hago pues cada 5 cada 10 y voy recorriendo esa tabla y voy dándole un 1 cuando la he terminado de bueno, una solución si, si, efectivamente pero es que el modifi.

.

.

no, lo que hago es recorrerlo porque si me diera el modifiye podría guardarlo también en otra columna que fuera modifiye entonces yo haría.

.

.

eh.

.

.

dame los modifiye pero no y esa es super usada, esa la he usado yo un montón 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á diciendo que no puede interactuar con vuestra API, ¿qué pasa.

» suele tener más presión el que paga, el que tú que estás.

.

.

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ño Otra cosa que suele pasar, cuando tu estas desarrollando y escribes en base de datos No puedes hacerlo en producción, imagínate 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.

Las que tienen una cuenta de pruebas es fenomenal, estupenda porque tú te conectas y empiezas a escribir.

Lo típico de «hoy hago un pedido y lo quiero escribir en tu aplicativo».

Pues claro, para hacer mis pruebas tengo que meterte datos.

entonces pides esa cuenta de prueba, si te la dan, si no te la dan, ¿qué haces.

Pone una cuenta gratuita, porque no vas tapando una aplicación y si la utilizas, y además suena a ser una aplicación muy caro, o bueno, depende de ello todo.

Puedes hacer una cuenta de prueba gratuita, sí, sí, te llama al comercial, oiga, que he visto que está interesante en nuestros aguas, y tú, no, yo sí he desarrollado, mi cliente sí lo utiliza, pero como no tenéis cuenta de prueba, yo tengo, bueno, historia, que os voy a cantar.

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.

.

.

cuando hay el solo de lectura que un crítico dice «no, no, léeme mi.

.

.

«, no te hace falta, hace un guide y ya está.

Y sí, entonces pues ya es lo que te vaya encontrando, es una silva.

Ya digo, yo mi pelea la última vez fue con una persona que me mandaba un CSV, yo pensé que con un CSV qué hago, cuándo me lo dejas, no sé ni cuándo me lo dejas, afinar que tenés que quedar, a que hora me la vas a dejar.

(.

.

.

) Sí (.

.

.

) (.

.

.

) Sí, sí, sí, ahí, cosa, ahí terapia de grupo, a partir de ahora de terapia de grupo, vamos a contar historias, pues sí, te encuentras de todo, vale lo mejor es tener tu documentación, de hecho, a ver vosotros que tenéis clientes y te van diciendo cosas, mira que quiero que mi WordPress me tenga información 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én 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én la API es una forma de factusol, bueno no, factusol tiene happy ahora justo la última mitad que hay en malaga nos decía que alguien tenía que conectar a factusol si tiene la base de datos en la nube, si la tiene en local no ah vale, ahí hay mucha creación 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ás y bueno ya dependiendo un poco no suele ser una cuenta mayor así 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ía una cosa rara y tenías que formatearla otra vez antes de hacer el JSON de code le tenías que hacer así, me hacía una cosa muy rara entonces al final pues eso es, así como modo resumen y me vais preguntando más cosas primero documentación me documenta, que me dé documentación que yo sepa ver qué autenticación 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ón, cojo el bieres, lo puedo guardar también en un transient token bieres, me veo la documentación en cuanto tiempo me caduca el token mirror.

El token mirror, qué pasa, que tú a lo mejor calculas un tiempo que no se ejecuta, pero no sé si siempre se ejecuta ese tiempo a la misma vez.

Entonces tienes que hacer una comprobación en la función de que el token mirror no esté caducado para poder regenerarlo.

historia que tenés que encontrar.

Yo les digo que el 80-70% de Api casi siempre es la ApiKey que es lo más cómodo.

O tienes que hacer más comprobaciones.

Si el toque me da ropa pues le hago otra petición.

Entonces echadle un vistazo, al final no nos da tiempo a ver el código que pongáis, pero yo digo que cualquier cosa, como tenéis mi página web, me preguntáis sin problema.

Entonces utilizar VPR Mode, vamos a ver si os estamos haciendo el resumen, la documentación bien documentada que podamos interactuar, el cliente tiene el poder, que paga tiene el poder, con lo lo cual yo puede pedir documentación, cuenta de pruebas y voy a escribir datos no lo escribo en el cliente, lo escribo cuando ya esté terminada la programación repaso la programación, me pongo a programar y ya partí de ahí por hacer pruebas, errores y terminar el trabajo.

Y sobre todo utiliza Abstrancia, cuando tengáis peticiones siempre es importante la Abstrancia.

Ya digo, para la lectura de este ejemplo que he hecho yo del pre-fit, no lo pondría en producción 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éis un poco de éxito y hacéis un play y se conoce mucho» ahora empieza, podés cargarte un servicio rápidamente, claro ellos tienen sistema de bloqueo para que su servicio siga disponible a los usuarios pero claro daría un mal servicio porque los usuarios «oye que le estoy dando y no funciona» que no sé qué claro todas esas cosillas el transient te garantiza que tú haces bien tu trabajo.

Es muy fácil, le pon una caducidad en segundos y ya lo estimas.

Yo que suelo poner, como son cada tres horas, la primera petición la hace, pues tampoco gusta más.

Que hay una información que no cambia mucho, que dices tú, bueno, tarda, pues le pones seis horas, un día, no importa, y puesto tres días entonces ya el transing no te sirve transing es para cuando tú sigues, la vayas pidiendo pero no, tú lo dices por lo de las finanzas, no.

ahí el transing no te sirve lo que pasa es que tú te la tienes que guardar o en base de datos o un transing de ese lote de datos (hombre hablando) No, no, es así.

Eso también es efectivamente.

Estás ahí y tránsit no te sirve, por ejemplo.

Porque tú no le vas a enseñar una información caducada al cliente.

Para ponerle minutos no te sirve.

A no ser que, a ver, tú puedes poner 60 segundos un tránsit, no pasa nada.

Sí, para que, por ejemplo, no estés pidiendo.

Claro, tú piensa que.

Para eso estás pensando, para que tú no hagas las peticiones siempre, o sea, la hagas solo la primera vez.

Si tienes, por decir algo, mil visitas, no son mil peticiones, de a pi, son mil visitas, o sea, una petición cada minuto o lo que sea.

Sí, sí, vas probando.

Aquí yo he dado un poco las reglas, pero que a partir de ahí, la primera vez que lo utilizamos.

Voy a dar las bases, ya estéis trabajándolo, ¿vale.

(Murmullos) No, no se escucha, simplemente se queda grabado.

No me acuerdo de la obra.

(Risas) Quería preguntarte cómo 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ón para comprar un servicio producto, ¿eso es lo que haces de alguna manera.

Sí, en Google Comer hay un método que está súper bien, que es de Vloz, que se inter, que.

que lo voy a enseñar.

Deboog Log Ad o algo así era.

Deboogie, mira que está de boogie no, esto no es lo de ahí.

Hay un método que es log, es que no me acuerdo, lo he trabajado, pero para Tiendas Online lo suyo sería vale no me acuerdo si no luego no me acuerdo como vamos a estar por aquí que yo voy al código para que no se que he grabado todo pero que hay si hace una tienda online puede utilizar un método que tiene Woocommerce que con el objeto.

¿tú acuerdas Pedro.

hay un objeto que tiene WooCommerce que es vc2.

lo me parece, estoy hablando de memoria, se lo registro, entonces tu le metes un comando y a lo mejor puede ser la devolución de que te da el API y cuando te de error, pues tu tienes un código para el código 200 si no has código 200, guardame el error, entonces le guardas ese log y entonces en Google Commer, en status log, ahí se encontraría, es muy facilillo, está muy bien, entonces ya dependiendo, ¿qué.

sí sí sí para Google Commer sí, sí, seguro.

Es que Google Commer tiene dos cosas muy interesantes para la API.

Tiene el Actions Schedule, que es como una librería para hacer peticiones por debajo.

Utiliza Google Commer Subscricions y todas estas para que se hagan las peticiones.

Buscaste un Schedule, va muy bien.

Y tiene otro que es lo de Debug.

Que no, pues te puede guardar.

La mayoría de las veces, como suelen ser las indicaciones que tú pones una página de ajustes y tú le pones usuario de contraseña, le da a guardar, pues ahí lo que hago es enseñar, la ventanita está de warper que le hace un aviso le pongo error, no se ha podido autenticar, ser típico más a esto entonces le hago un echo y directamente salgo bookcommer, usc.

deboot, o sea lojo o algo así y el nombre, ya te he puesto el nombre que me ha faltado cuando tu haces una petición de API te suele devolver el error te da un código y te da el mensaje pues tu solo guardas en el log y ya está, 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ón y le pongo una página de todo pero si hay Google comers tienes ya el método ya todo hecho, no tienes que poner más, simplemente una línea y ya está «WC_GYUN_LOGGER» y ahí tiene métodos como alert, para alert, clear, para limpiar, critical, para mostrar critis.

.

.

Es una app más raro ya está, no, no sea crítica, no sea que sea un funcionamiento de.

.

.

Sí, está de lo chulo que lo puede guardar, lo guarda.

A mí sí me gusta meterlo directamente y así lo guarda.

¿Una puntilla más.

¿Sí.

¿No.

Bueno, me tenéis por aquí.

Si tenéis alguna pregunta de vosotros, me decís.

Muchas gracias.

[aplausos] [Pitido] [Pitido] [MÚSICA] [Música].

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

ÚLTIMOS ARTÍCULOS

Cierre Ventana

State of the Word: Plugins

Foto realizada por wordpress.org Ayer se presentaron las novedades en las que se va a trabajar en WordPress…

Cierre Ventana

Me Entrevistan en la Taza de Amadeu

Soy David Pérez, de Granada, y lidero la agencia Close, donde digitalizamos proyectos. También estoy muy involucrado en…

Cierre Ventana

Conoce la nueva Herramienta para hacer tu Plugin más seguro y Cumpla Buenas Prácticas

Esta es la charla que he dado en la WordCamp Griñón 2024, acerca de Plugin Check Plugin la…