 Os presento a Paco Marchante y Victor Sánchez, que trabajan juntos, viven en Cali 2.2, son miembros de la comunidad de Cali, participan en Chiclana o Cali Files. ¿Chi? Cali. Cali. Cali. Cali. La comunidad, y bueno pues trabajan los dos en Movomo, como fundadores finas y avalladores, en fundarla trabajaste un rato. Ahora viene lo complicado. Las dos se seleccionan las ponencias, y bueno, os dejo con ellos y que vaya bien, hay que compartir los ingresos. ¿Se escucha? ¿Bien? ¿Sí? Vale, como estáis viendo, lo moví a todo Gapor que tenemos 20 minutos. Así que hay que ir rápido, ¿vale? Bueno, sobre todo lo que vamos a hablar hoy, sobre la API de WordPress, una gran desconocida para muchos, y que esto está funcionando. Claro que no, ahora, ahora no, si no, yo tengo un torrente potente. Ya estamos todo más o menos calentito, hace un calor de la hostia. Así que nada, vamos a empezar, básicamente, a todo gas, porque para explicar lo que queremos contaros de la API, vamos a tener que ir dándole cañita. Básicamente, empezamos fuerte, con una definición de Wikipedia. Vamos, si nos ceñimos a la definición, la una interfaz de programación de aplicación y bla, bla, bla. Básicamente, una API, ¿vale? Es una conexión funcional. Básicamente, conecta dos cosas. Va a ser el siguiente día, porque se ve bastante mejor. Una API es una interfaz que está en medio, ¿vale? entre nuestra base de datos y los usuarios. Actualmente, si yo quiero, si no usaremos la API y quiero sacar algo de una base de datos, pues tengo que conocer cómo funciona esa base de datos y cómo saca información de ella. Es un inset, un get o lo que haga falta, ¿vale? Lo bueno de una API es que nos ofrece una serie de métodos que vamos a ver después, que nos sirve de una manera, de un nivel más fácil de adquisición. Nos hace falta saber cómo funciona esa base de datos ni nada por el estilo, además de que nos da una capa de seguridad, porque nadie está toqueteando los datos directamente, sino que está ahí interaccionando con la API. Básicamente, esa funcionalidad es la más importante, pero también nos ofrece una carta muy amplia de posibilidades y es que cualquier persona pueda usar los datos que tenemos en nuestra base de datos. Por ejemplo, nosotros, lo que vamos a hacer ahora hoy, es mostraros cómo montaríamos una app con la página de la work on sevilla, sacando sus noticias y maquetándolas en una aplicación móvil, ¿vale? Básicamente eso, ellos nos han... esta la API de WordPress está abierta, así que la vamos a usar. Y la puede usar cualquier usuario que sepa cómo usarla, ¿vamos? Vale, pues una API, lo que tenemos son los empoins, que aquí me puesto la definición de un empoin, que son las URL que da serie de datos, como no lo que vuelven. Aquí tenemos un ejemplo de lo que sería un empoin en WordPress, que sería poner wlp.json, vale, wlp, w2, y ya el empoin que damos, ¿no? Exactamente, este empoin ahora mismo funciona, si le pincháis, os va a devolver un JSON, que es una estructura de datos, donde nos va a decir las 10 últimas entradas que hay en esta página, y básicamente nos pondría su título, nos pondría una serie de cosas, ¿vale? Ahora lo vamos a ver en más detalles. Así que tenemos que condicirle a la API. Sí, básicamente eso sería los empoin que harían al final de la URL, ¿vale? También tenemos el get asonomía, get category, ya devolviendo la categoría, la asonomía, todo lo que tengamos en la página de WordPress. Vamos ya a los interesantes, realmente. De el medio, podemos sacar los medios, las imágenes que tengamos, imágenes de WordPress, y ya lo que la llamamos cogiendo. Que página, que usuario, por ejemplo, con WordPress podemos hacerlo individual, que nos traiga una en concreto y un cual con todos. Exactamente, el getusuario es un poquito especial, porque por defecto está habilitado getuser con el ID de usuario para poder sacar su información, pero esto, sin embargo, lo podemos aplicar a cualquiera de los anteriores, y ponemos page, barra, el ID, nos va a sacar solamente los datos de esa página en concreto. Ahora lo vamos a ver, vais a ver un poquito mejor, a lo que nos referimos cuando decimos sacar los datos, ¿vale? Aquí, por ejemplo, vamos a ampliar hasta 100, con un filtro máximo, y hay que poner, igualmente, esto que subirá y lo podréis, esto que tiene el demás, además, en el code de WordPress, está toda la información más ampliar, y lo que hemos dicho antes, poniendo el ID al final de ese port, le haría una información de ese en concreto. Ahora, cuando decimos que sacamos, ¿vale? Nos referimos a este troncho, que hay aquí, ¿vale? Cuando llamamos a esta urreale, básicamente nos va a sacar un fichero con esta estructura de datos, ¿vale? Aquí solamente la diapositiva tendría que ser gigantesca, para que cambiara el fichero entero, porque nos trae una cantidad de datos enorme, ¿vale? Exactamente, esto seguiría hasta los 10, ¿vale? Nos trae muchos datos interesantes, que es lo que vamos a ver a continuación. Básicamente, hemos destacado los que vamos a usar nosotros para la app, ¿vale? ¿Qué sería? El ID del post, este lo necesitamos, porque si necesitamos hacer otro tipo de consulta, pues ya tenemos el ID guardado y podemos usarlo para otras consultas. La urreale de la entrada, esta también es bastante interesante, por si quieres dirigir a la página web directamente, pues aquí tienes la urreale de la entrada, exactamente. ¿El contenido viene con HTML? Viene formateado en HTML, esto hay que tenerlo en cuenta, ¿vale? Si quieres mostrarlo en una app, por ejemplo, en Android, vas a tener que hacer un HTML format, porque si no se te va a ver todos los pelos, los estrons y toda la pesca, ¿vale? El ID del autor, que aquí veis el 3.400... Bueno, no sé cuántos números hay ahí, básicamente este es un ID del autor muy grande, porque la página de la workah está en un servidor un poquito especial, y hay bastantes usuarios, ¿vale? Y con el usuario de antes, hemos usado otro, que era el que estaba en la entrada de la workah en Sevilla, y básicamente era el 74, 25, 83, 0, que es Mariano, que no sé si estaba por ahí. Eso es lo que hablábamos antes, cogemos el endpoint y le ponemos el ID del usuario, y con ello pues nos trae información de este completo. Aquí, si veis, este es su ID, nos ha traído el nombre, Mariano Pérez, la URL que tiene asignado a su usuario, y la URL de los avatares, ¿vale? Con los diferentes tamaños que tenemos. Si os fijáis, el de antes, aquí, nos dice el ID del autor, pero no nos dice el nombre, así que si queremos sacar el nombre, tendremos que hacer dos llamadas. Si pasamos al modelo, este es el modelo de aplicación que vamos a hacer, una aplicación muy simple, básicamente están las entradas, pinchas en una entrada y vas a una vista en detalle, muy simple, ¿vale? Era básicamente para ilustrar las llamadas que tenemos que hacer, esto se puede complicar muchísimo, muchísimo más. ¿Vale? Pues aquí tenemos cómo vamos a sacar cada uno de los datos. Exactamente, haciendo una llamada WPW2POS, ¿vale? Hemos sacado todo ese troncho que habéis visto antes, y para hacer una carta, necesitaríamos coger estos campos, ¿vale? Por ejemplo, para la foto, pues el WPW attachment, para el textito, el script, para el título, pues el título, ¿vale? El date, pero claro, si queremos sacar el nombre, esto se podría arreglar sin tener que programar un custom endpoint, ¿vale? Pero para no complicar demasiado las cosas, hacemos otra llamada, a user, con el id, y sacamos el campo name, así con dos llamadas tendríamos la carta. Si recordamos a esta consulta, sacamos el id del autor. Teniendo este id, podemos hacer luego la consulta para sacar los datos de este autor. Exactamente, y guardaríamos la carta cada una, pues tendría un campo, que es el id del POS, ¿para qué? Para que cuando se pinche, luego se pueda hacer una llamada y sacar toda la información en detalle. Aquí está, esta sería la vista en detalle, y haríamos WPW2 POS 3, ¿vale? Que sería el id de este POS en concreto. Bienvenidos a la huerta en Sevilla. Nos daría todo el JSON que hemos visto antes, y sacaríamos solo la información que necesitamos, ¿vale? Volvemos a tener que hacer una llamada con el usuario, si no guardamos los datos de antes, porque ahora queremos la URL, que no la cogimos antes, solo cogimos el id, pues, y el nombre. Así que ahora tendríamos que hacer otra llamada para coger las fotillas de Mariano. ¿Qué pasa? Vemos que en todos estos casos hemos tenido que hacer dos llamadas, ¿vale? Ya os digo, en este caso que es muy simple, se podría solucionar sin tener que irnos a programarnos nosotros mismos una llamada, pero para que veáis cómo sería una llamada propia, vamos a hacer que estas dos llamadas se hagan en una, ¿vale? Igual que la otra, y solamente tengamos en general que hacer dos consultas, una para la vista en detalle y una para la generación de las tarjetas, ¿sí? Porque nos hemos encontrado aplicaciones que se habían hecho a empresas, sobre todo, en las que, como la empresa era una página web corporativa y le habían hecho el tema, pues también le habían metido algunos custodianempoin en el tema, le habían metido custodianempoin en el tema. Entonces, siempre que vayáis a programar funcionalidades, hacerlo en un plugin, ¿vale? Os va a ahorrar muchísimos quebraderos de cabeza, y si falla algo que falla un plugin en la página más o menos, se sigue viendo igual, ¿vale? Porque al final cliente, por la mayoría o por lo menos lo que nos tenemos nosotros, se da cuenta si la web se ha caído cuando la web no se ve o vaya algo raro, ¿vale? Porque que no funcione la API es más raro que se te cuenta. Por eso mismo, hacerlo en un plugin, ¿vale? Esto es código, aquí todo más o menos, ¿vale? ¿Tenéis pinta de haber visto más de una línea? Básicamente, esto sería como registrar una ruta nosotros mismos. Antes hemos visto que estaba la WP-V2. Pues ahora nosotros vamos a hacer una donde solamente nos traigan los datos que necesitamos, porque no necesitamos un JSON kilométrico. Exactamente. Esto, o sea, que esto es que sigue por abajo y aquí yo he ido quitando campo para que se viera más o menos, pero esto es mucha información que realmente para construir esa cosilla que necesitábamos no es necesario, porque nos trae también las actualizaciones, las revisiones, quién ha tocado, o sea, muchísimas cosas que no nos hacen falta. Básicamente, explicando rápidamente este snippet, esto es una función que ya nos trae WordPres, ¿vale? Registres de root, aquí pondríamos el nombre de nuestra API como tal, ¿vale? Nosotros hemos puesto WordAppV1 y la ruta a la que llamaríamos, que sería barra noticias. ¿Qué hacemos aquí? Aquí ahora cargamos unos argumentos, ¿vale? Estos argumentos, si os vais al codex, esto es, o sea, aquí puedes meter tú lo que quieras, esto es larguísimo, ¿vale? Aquí me he puesto básicamente lo más simple para que nos cambiemos en 20 minutos, para que entren en la diapositiva. El método, ¿vale?, que vamos a usar para llamarlo, un get, un post, un date, básicamente aquí vamos a usar un get, ¿vale? Y el callback, esto que es, básicamente es lo que nos va a servir la información que necesitamos, que en este caso es una función, ¿vale? Vamos a llamar a esta función que vamos a programar ahora y esto nos devolverá una serie de datos, ¿qué es lo que nosotros necesitamos? ¿Qué necesitamos ahí? Por una lista de noticias, ¿vale? Es una función muy simple, lo único que vamos a ver es crear un array, retorna ese array. Aquí lo que hacemos es cargar un post de array, básicamente, que nos cargue 10, ¿vale?, que nos cargue 10 array en este, 10 posts en este array. Bueno, ya veremos, ahora mismo, otro caso donde aquí le tendramos que servir el ID de la entrada, pero no, dale valente. Creamos un bucle donde vamos a recorrer este array, ¿vale?, cada uno de ellos es una entrada, aquí esto se puede hacer de mil maneras, ¿vale?, una manera muy simple y muy rápida para que lo veáis, esto se puede hacer de mil maneras. Pero básicamente, hacéis un array push y creáis la estructura de la información que necesitéis, ¿vale?, ID, entrada ID, fecha de entrada, sacáis el post de array, título de entrada, sacáis el post chido, sacáis el extracto y sacáis el nombre de autor con el ID, aquí, get author name y entrada o source. Solamente, exactamente, esto es solo lo que vamos a usar, ¿vale? Eso sería por esta parte y la segunda llamada sería esta. Esta sería para generar la vista en detalle, esto sería para generar la vista en detalle. Aquí, como veis, esta es la URL resultante, ¿vale?, esto es lo que tendríamos que poner para poder cargar la información de esta noticia en concreto. Es lo mismo de antes. Es lo mismo de antes, básicamente, lo que pasa es que sacamos un... Y que así recibimos los datos que vamos a recibir, ya sea el ID... Exactamente, esto es un array, ¿vale?, tres minutos. Esto es un array donde se va a cargar todos los datos que hayamos metido por parámetros en la URL, ¿vale? Y lo mismo que antes. Pero pasa que no está dentro de un... Exactamente, no está dentro de un bucle, porque aquí solamente tenemos una entrada. Bueno, básicamente, lo que habéis visto antes, tenéis un plugin que hice anoche, después de la cena, con eso, lo subí a Jihad, por si queréis ver cómo funciona y si puedes deschufar un momento, es un caos. Pues... Y a la final, vamos, una compañera de la comunidad... Lo está pasando un momento complicado y yo creo que ahora es solo un momento donde tenemos que estar todos más unidos y echarle un ojo, ¿vale? Tampoco queremos hacer mucho con esto de... Pero, vamos, que básicamente es eso. Exactamente, ¿vale? Está pasando por un momento complicado y ahora es cuando tenemos que echar la mano. Si puede... ¿Sali enseñamos eso? Básicamente, os voy a enseñar la llamada que es resultante con el plugin, ¿vale? WP Jason... Sí, vamos, sí está, no lo está abusando. WP Jason, barra... No, barra Word App, barra W1, barra noticias, por ejemplo, noticias. ¿Vale? Veis, si pones... Esta es la primera llamada que va a generar todas las tarjetas. Ya no es lo mismo que antes. Ahora los datos nos vienen un poquito más lo que necesitamos. Entonces, simplemente, esta llamada haríamos una para todos. No nos haría falta más nada. Exactamente. Pues, por ejemplo, pon el nueve. No, noticias. Noticias, aquí hay un nueve. Esto te pasa si escriben mal, ¿vale? Aquí está, ¿vale? Donde viene la urrele de la imagen destacada, la avatar, el nombre del autor, el contenido, el título de entrada y lo otro. ¿Por qué es importante que hagamos esto? Puedes poner un momento a la de la WorkOn, coge una urrele... Si pincha en una urrele de la diapo, te va a llevar el tiro. Es que vais a ver la diferencia bastante mejor, si lo veis aquí directamente. Ahí arriba, cualquiera de esas. Esa misma. Por la empresa... Si no... Ahí está, ¿vale? Dale abajo, ¿vale? Es diferente, no necesitamos todo esto. Simplemente necesitamos lo que hemos cargado, ¿vale? Ahora mismo te traes 10 entradas. Si tenemos un blog con 1.000 entradas, pues ya son 1.000 entradas con un montón de información que no vamos a necesitar y sobre todo que en este caso tendríamos que hacer una llamada para sacar el nombre de cada autor. Si tenemos 1.000 entradas, son 1.000 más. No tiene sentido, ¿vale? Así que lo mejor sería crear un custom endpoint que nos saque solo la información que necesitamos. No nos daba tiempo, pero con la API se puede hacer muchísimas más cosas, ¿vale? No solamente sacar datos y sacar noticias, ¿vale? Aparte, lo bueno de esto es que yo me lo quiso y yo me lo como. Tú te monta aquí los datos como tú quieras tratarlo y ya te complica tu vida y te lo moldeas como quieras. Sí, ya está. Sí, yo creo que hemos estado durante tiempo. Ahí está. ¿Listo? Bueno, ahí una pregunta. Yo, un detalle que se me da... Hay muchas personas, yo antes hacía todas las API con nodes y toda la pesca. Y básicamente, a nivel de rendimiento, va prácticamente igual, ¿vale? A niveles de aquí. Si alguien tiene un Facebook, tiene un Airbnb, pues ya entonces está demorando cosas diferentes, ¿vale? Pero a nivel de aplicaciones de empresa, a nivel medio alto de ahí para abajo, WordPress te va a dar un servicio, una respuesta de sobra, ¿vale? No, sin problema. Es de allí, es de la derecha, que a los de la izquierda, a los de la izquierda me la van a ver. No te problema. O sea, te va a devolver lo que hayas dentro del content de WordPress, ¿vale? Eso significa que si tienes shortcode puesto, pues te va a devolver los shortcodes, ¿vale? Yo ahí, luego, te digo una cosa. ¿Tiene la mesa que no proporciona la work on sevilla? No, para poder, si queréis... Exactamente, pues ahora lo hablamos porque se pueden hacer truquitos, ¿vale? Esto, ¿no? Venga, venga, sí, venga, al chaval. Vale, no, sí, sí, esto es lo que mola. Vale, a ver, aquí empieza, porque el basic guide, ¿vale? Te tienes que instalar un plugin, toda la pesca y es un rollazo. Entonces, yo lo que uso. Luego, si quieres, lo vemos en más detenimiento y te enseño incluso el código, yo lo que uso, si vas a ser un usuario frecuente, yo uso una pk, ¿vale? Genero una clave para la API que se le instalo a esa persona en concreto. ¿Vale? Que siempre va a tener la misma. Si te fijas, hay mucho. Yo que sé, mail sim, por ejemplo, usa pk, ¿no? Hay muchísimas plataformas que usan a pk por lo mismo. Porque cuando ya nos metemos en autestificaciones, pues podemos crear una cosilla y se puede complicar bastante. Pero con una pk que se la puedes pasar en un kit, por ejemplo, y que tú haces una comparación, si esa API corresponde a ese usuario y toda la pesca, o sea, hacerte tú un propio sistema de registro, ¿vale? Si no, puedes hacer otra cosa, que es mandar por URL con un kit el usuario de la contraseña cifrados, ¿vale? Yo, por ejemplo, uso mucho RSA, soy, me encanta los rusos. Yo uso de RSA de vez en cuando y toda la pesca. Entonces, básicamente paso por parámetros con un número que sabes tú, ¿vale? Por el otro lado, de cifra y ya juegas tú con ese usuario de la contraseña, ¿vale? Es como todo, depender lo que te quiera complica la vida. Lo puedes hacer muy fácil o muy sencillo y si a nivel de seguridad, si te quieren coger, te van a coger, ¿vale? Pero las autestificaciones, ya te digo, con una pk yo lo solucionaría fácil. Y si es para escribir nada más, qué es lo más malo que te puede pasar, que te escriban y tú luego borres. ¿Sabes? Es que depende, ¿sabes? Depende, depende de lo que estemos hablando, ¿vale? Pero... Ya está, ya está. El Hansel.