 Hola, aquí estoy de nuevo. Os voy a presentar la siguiente charla que es de Adrián Cobo. Lo primero quería dar las gracias de parte de la organización por haber hecho un pequeño esfuerzo en hacerlo un poquito más corta lo que lo tenía pensado. Así que esto sugiere que luego al final a lo mejor no tenéis tiempo de preguntas por solo una y tenéis que ir a Zuma a hacercelas, ¿vale? Dicho esto os cuento, Adrián. Lleva más de 10 años dedicándose a crear webs. Es desarrollador especializado en PHP y Javascript y el fundador de Graphic, una empresa que ofrece soluciones integrales web y comunicación. Y también está al frente de la mitad de Gran Uyers, aquí en España. En lo personal es músico, es parte activa de la comunidad del municipio en el que vive en Gran Uyers y es aficionado al retrogamel, el manga, las series y en general las cosas que hacen interesante una persona bajo mi punto de vista y los juegos de mesa también. En su charla nos dice que nos olvidemos que, perdónad, nos dice que nos olvidemos de los short codes y abacemos sobre los bloques que son más usables y accesibles. Así que adelante. Gracias, Nora. Ocaeri a todo el mundo, ¿vale? Gracias a los que habéis aguantado aquí hasta el final. ¿Vale? Gracias a toda la organización, que se lo están currando un montónazo de todo y en especial al equipo de ponentes por haber elegido mi charla. Como ha dicho, Nora, esta sesión estaba preparada para ser un taller, ¿vale? Pero y así es, todo el mundo llevabais un pequeño subvenir a casa, ¿vale? Que sería vuestro primer bloque, ¿vale? O cogéis un short code que tuvierais por ahí reciclado y lo pasabais al bloque. Pero como no va a dar tiempo, pues os dejaré todo el código y os podéis rever la charla y si no, dejáis las preguntas en el chat y si no, nos vemos luego en el Zoom y si me buscáis, me encontráis en Twitter, en mail, donde queráis. ¿Vale? Os advierto, no voy a ser tan rápido ni como Iñaki, ni como Owahari, no voy a ser tan rápido como Owahari, no voy a ser tan valiente como Iciari, hacerlas sin diapositivas, que se cascó la presentación sin diapos, ni como Fernando, que se puso a picar código a lo loco y no voy a cambiarme de camisetas como Fernando Portomeñe, básicamente porque no las tengo. Vale, dicho esto, vamos a la presentación, perdón. Pasa tus short codes a bloques o de short codes a bloques y no te quedáis atrás. A ver, ¿cuánta gente de aquí utiliza short codes? Fernando, levanta la mano, sé que los utilizas. ¿Vale? Demasiada gente, ¿vale? Esto es demasiado del 2015. Supongo que si estáis utilizando short codes y sois del 2015, pues seguiréis escuchando cosas como el Hello de Adel o como la gozadera de gente de zona. Suena viejo eso ya, ¿no? Esas canciones. Entonces, digo 2015 porque fue en ese entonces, ¿vale? Cuando nuestro querido Matt dijo. Entonces, ya se veía que todo iba a cambiar, ¿vale? Que el JavaScript tomaba un papel protagonista. Entonces, tranquilos, os voy a ayudar a salir de ese pozo y volver al presente, al 2020. Si estáis en el sitio adecuado, si nunca habéis visto un bloque por dentro, os voy a explicar las claves del bloque. Y ojo que el código que muestro es de muestra y aprendizaje. Para el código, bueno, bueno, bueno, os daré unos tips al final. Pero este es 100% válido, ¿eh? Y funciona. Y lo podéis hacer servir siempre. Viva la GPL. Estupendo. Ojo, a todo esto, hay cosillas que no se van a explicar. Vale, son los métodos de desarrollo moderno, como Babel, Webpack, Groon, NPM, que os puede sonar un poco a chino. Pero tranquilos, no hace falta controlarlos del todo, ¿vale? Pero como decía, para hacerlo bien, bien, bien, bien, bien, sí que se debería entender. Pero tranquilos, ¿eh? Que desde nuestra primera clase de tutorial, ponencia o tal, nos va a hacer falta. Igualmente, al final, como os decía, os voy a dar un par de tips para que esto no se os haga bola, porque Webpack ya ha preparado unas herramientas, ¿eh? Flipad con el hype, que os estoy dejando para el final. Tampoco me meteré con las best practices y el 18, la internacionalización. Pero si todo esto lo habéis entendido, no habrá problema en aplicarlas. Así que tranquilos, es normal que todo esto se os haga bola, ¿vale? Que os abrume un poco, pero siempre lo digo, que la práctica hace al desarrollador, ¿vale? Aquí tenéis el enlace donde está toda la documentación de lo que voy a explicar para que os leáis a vuestro tiempo, para que lo entendáis. Y si no, siempre va bien, pues, tener un codex, ¿vale? A mano. Esta es edición coleccionista, firmada por Madmúlenbe, ¿vale? Con dedicatoria especial, obviamente. Pero en la web lo tenéis todo. Así que empecemos a apachear un poco ideas, ¿vale? Lo que vosotros tenéis de su el code, ¿cómo serían un bloque? Ah, si nos ponemos a resumirlo, todo bien, bien, bien, bien. Es lo mismo, ¿vale? No dejáis de ser una interfaz que permite añadir funcionalidades aquí, en gestión a los contenidos, pues, con estética y todo en el front, ¿vale? Además, se pueden añadir unos atributos que, además, esos atributos los tenemos disponibles en la parte de código para que los desarrolladores, pues, toquemos y hagamos nuestras cosas, ¿vale? Ah, entonces, seamos sinceros. ¿Qué le queda mejor al backoffice? Esto o esto? A ver, os lo voy a poner otra vez, ¿eh? ¿Qué le queda mejor? Esto o esto? Hombre, este no hay color, ¿vale? Creo que estamos de acuerdo, ¿no? Sí, abre, muchas gracias. Vale, muy bien. Entonces, ¿por qué queda mejor el bloque? Pues, porque estamos mejorando la experiencia de usuario y la interfaz, ¿vale? No me quiero meter en accesibilidad, ¿eh? Por favor, Vicen, perdóname. No lo he tocado, no sé si a lo mejor va peor o mejor, ¿vale? Pero sí que es interesante, pues, al final llegará la accesibilidad, ¿vale? Además, el bloque permite conocer todas las opciones que tiene disponible. En un surcoaster, al final, tenías ahí un texto que tú podías escribir y al no ser que al cliente le pasaras toda la documentación, pues el cliente no tenía ni idea de si eso estaba yendo bien, estaba yendo mal. Si lo acabo de poner, a mí alguna vez me ha llamado uno de, no me funciona, no me funciona. Lo abro y había puesto letz, en vez de letz, ¿vale? Entonces, claro, es que un cambio de letra ya no funciona, cosa que con un bloque eso lo arreglas. Vamos al código que es a lo que hemos venido, ¿vale? No me quiero extender. Esto es un surcode, ¿vale? Esto es nuestro querido surcode, el que hemos conocido de toda la vida, con el que nos hemos casado y que lo queremos, sea aún, pero demos el espacio. Si vemos el surcode, ¿vale? Mi querido surcode es una función, ¿vale? Que llama a una función que recoge unos atributos, hace cosas del PHP y devuelve normalmente una string, ¿vale? Puede ser otra cosa, pero normalmente devuelve una string. Así que esto ya está. Vamos a ver un surcode. Veréis como la parte del PHP, el surcode. ¿Vale? Tenemos aquí. Al principio, empecemos a registramos un JavaScript. Y es un Learn JavaScript, ¿vale? Muy bien, registramos el JavaScript. Como veis, lo llamamos después de unas funciones. ¿Vale? Ahí, después de unas funciones, después de unas librerías. Igual que a ver que cuando queríamos una JS que se cagara después de jQuery, pues aquí lo estamos llamando después de una serie de librerías. Estas librerías las llamaremos la magia de Gutenberg. ¿Vale? Son las que añaden todo lo que podemos hacer. Entonces, después tenemos otra función que registra el log type que mentalmente pachéremos lo como si fuera el shortcode. ¿Vale? Primero le estamos pasando un identificador con un MSP al principio para que no haya problemas de que haya dos que se llaman igual. Y si nos fijamos editor script, le estamos pasando el mismo JS que hemos referenciado en la parte superior y pongamos especial atención en el render callback, que es la función que se va a llamar cuando lo rendericemos en el front, que es la función que tenemos abajo. Si fijáis, le entramos en los atributos, pasan cosas del PHP y devolvemos algo, ¿vale? Y tenemos también los atributos, ¿vale? Que ahí es una array de cosas. Ahí tenemos que especificar las cosas que le van a llegar a esa función del PHP. ¿Vale? Muy bien. Esto es el PHP. Hasta aquí yo creo que lo tenemos bien, ¿no? Perfecto. ¿Me seguís, no? ¿Vale? Pues aquí estamos en el PHP. Vamos a la siguiente diapo, ¿vale? Esta es la parte del Javascript. Y es el Learn Javascript. Deeply. Matt, te he dicho que no me interrumpas cada vez que digas Javascript, porque me cortas el ritmo y vamos justo antes de tiempo, ¿vale? O sea que, silencio, ¿vale? Perfecto. Perdona que Matt se ha quedado porque le gustó mucho la workout y, bueno, pues se está quedando a ver si llega la third party. Vamos a la parte del JS, ¿vale? Vamos a dividirlo por diferentes, no lo digas. Vale, perfecto. Os sentiréis un pelín más inseguro, pero al final estaréis como pero por nuestra casa. Vamos a la parte inicial. Unas constantes para los Javascript de toda la vida, Const no deja de ser la bar, el bar que poníamos antes. ¿Vale? Tenemos las librerías que hemos llamado, que son las que incorporan la magia de Gutenberg. ¿Vale? Y en WPblogs, pues tenemos register block type, que nos incluye una función para poder registrar el bloque. En Editor tenemos inspector controls, que es lo que nos permite añadir cosas en la columna de la derecha, ¿vale? Y en WPcomponents tenemos un panel body, un select control, y os pongo un enlace donde tenéis todo entre nosotros. Son los componentes de React con cosillas. Pero eso, tenéis select control, tenéis text area control, tenéis text control, tenéis un color picker que se llama color palette. Bueno, muchas cosas, ¿vale? Esto es la documentación, está. Pero nosotros de momento con estos dos ejemplos. Vamos a la siguiente parte, que me gusta decirle que es la parte fácil, porque a simple vista se ve. Te dejamos la función register block type, que la hemos cargado de la librería superior, y tenemos un nombre, un identificador, como os hemos dicho, con un name space para que no nos pisemos entre bloques, y un título, el que queráis. Como he dicho, no está internacionalizado, pero internacionalizado, es una vez que tengáis todo esto, es muy fácil. A un icono que tenéis disponibles, todos los que están en Dashikons, pero igualmente, si quieres un SVG, se puede incluir ahí, y categorías. Si ves, estas son las cinco categorías comunes que viene con Gutenberg. Con una función PHP, sería muy fácil incluir una nueva. Perdónad. Sería muy fácil incluir una nueva y referenciarla desde aquí. Parte fácil, estupendo. Vamos, vamos, vamos, seguimos. Vamos por la parte de atributos, que aquí es donde hay un poquito más de chicha, ¿vale? Atributos es todo aquello que nosotros vayamos a cambiar durante la ejecución del código. O sea, las variables que le vamos a dar al usuario, la calidad de poderlas cambiar, ¿vale? Una vez más tenéis ahí la documentación para que lo investiguéis. Afectos prácticos son los mismos atributos que el shortcode, ¿vale? Les pasaríamos. Lo único que cada vez ser JavaScript y hacer un objeto, le podemos dar más cosas más guais, como el tipo, ¿vale? Un string, un boleano, un objeto, un array. Además, permite más valores, ¿vale? Permite un default, permite un source, permite un meta, permite un query. Pero esto no importa, ¿eh? Quedaros con lo de arriba. Igualmente, antes, con un shortcode, todo era en strings, o sea, que con esto que os enseño, ¿vale? Tenéis aquí los atributos, ¿vale? Al in, veje, color, titel, heading, contención, cosas que me he inventado yo, porque he pensado un bloque que se le puede necesitar esas cosas, ¿vale? Y si veis los types, pues, todo le he puesto a string y me he permitido el lujo de al titel y al header, ponerle que por default sea un título, ¿vale? Que saldrá ahí, que por default es título. Y que heading por default sea un h2. Perfecto, seguimos. Vamos al edit. Edit, ojo, que aquí toca magia. Magia potagia, ¿vale? Vamos bien de tiempo, vamos bien de tiempo. Estoy corriendo un montón. En edit es la parte que se verá cuando editamos, ¿vale? Nosotros cuando vamos a la parte de arriba del gutem, me clicamos y elegimos nuestro bloque que se pinta dentro y que cuando lo seleccionamos también cambian cosas y cambian cosas en la columna de la derecha, ¿vale? Aquí lo más cómodo y mejor es trabajar con JSX y transpilar, ¿vale? Pero que no se osagabola. Se puede trabajar de otras maneras, ¿vale? Aquí, por ejemplo, en el JSX, pues tenemos un select control, tenemos el text attribute, tenemos el control palette, tenemos también un change, un inspector control, pero vamos al código, ¿no? Queréis que os enseñe un poco de código pues estupendo. Aquí tenemos, ¿vale? Aquí os enseño un archivo JS que si nos fijamos, pues las constantes que hemos declarado con el register post type, con el inspector control, con el text control, text area, el register block type, ¿vale? Aquí le hemos puesto el identificador, un título, que ojo, aquí está internacionalizado, ¿vale? Una descripción que no lo ha explicado antes, pero es que es la parte fácil, es la parte que es muy comprensible, icono, smiley, categoría común, los atributos que son los mismos que he enseñado antes, es lo único que aquí he puesto con enter, en vez de línea, ¿vale? Y vamos a la parte de edit. Si os fijáis, aquí en edit, ¿vale? Si os fijáis, le pasamos dos variables, esto es como un función que le pasamos dos variables, igual, lo único que está escrito con Javascript moderno, ¿vale? Si os fijáis dentro, declaramos cinco funciones, ¿vale? Que todas las funciones hacen lo mismo. La función setalign le va a poner al atributo aling el valor que le pasemos, el veg color le va a pasar el atributo veg color que le pasemos, igual, no me quiero repetir, ¿vale? Además hemos declarado una constante, acordaros, como el bar, ¿vale? Que se llama Herinarai, ¿vale? Que le hemos dicho, pues, labels y values, porque esto lo vamos a utilizar más adelante, ¿vale? Y atención, esto es JSX, para los que sepáis un poco HTML nos debe sorprender tanto, ¿vale? Tenemos una deep, un deep class con una clase, deep style. Ojo, aquí primera diferencia, en las clases no van con text aling, sino que van con el camel case, ¿vale? Le pasamos el atributo aling, que va a ser lo que tengan todo momento, aquí si os fijáis, atributos heading, simplemente es porque este valor va a coger una de estas h2, h3, h4 y lo va a renderizar como tal. Y con todo nuestro morro, aquí le pintamos un text area control, que onChange va a modificar el content. Esto estamos hablando de la parte del bloque, de la parte central de Gutenberg, ¿vale? Si os fijáis, en inspector controls, se llama la columna de la derecha, tenemos el panel, el inspector control, le hacemos un panel body, que simplemente es para que salga un, se pinta un cuadradito, y dentro le estamos pintando un select control, le estamos pintando, ahí al select control le estamos diciendo que el valor va a ser lo que tenga heading, que por default era un h2, ajá, además el label va a ser select heading, en options, heading array, ah, aquí está en el heading array que le habíamos pasado antes, y onChangeSetHeading, que va a decir que cuando cambiamos ese select, directamente le vamos a añadir a heading el valor, y que este valor se va a pintar aquí. Oh, oh, esto es magia, esto es magia, esto es super guay, perfecto, creo que más o menos se ha entendido igualmente lo que decimos, tenemos todo el código antes, vamos a la parte del safe, la parte del safe, para hacerlo bien, bien, bien, bien, como dice Gutenberg, ¿vale? Deberíamos guardar el contenido de ese bloque en base de datos, pero como aquí, lo que estamos intentando es simular un shortcode y reficar un shortcode, vamos a utilizar la función del render callbox que estábamos haciendo antes, por lo tanto, con todo nuestro morro le ponemos safe, returnul, y nos quedamos tan panchos, porque cuando le decimos returnul, vendrá esta función y dirá, vale, ejecuto mi querido bloque, mi querido bloque le pasaremos unos tributos, que los atributos tendremos el alán que hemos dicho, el heading que hemos dicho, el content que hemos dicho, bueno, los atributos que hemos pintado antes, le haremos cosas del pht, y devolveremos algo. Perfecto, aquí, ¿vale? Creo que voy súper bien de tiempo, he corrido un montón, ¿vale? Aquí en el ejemplo, ¿vale? Podéis ver como, podéis ver toda la parte que explicado, tenéis un git, que podéis clonar, podéis bajarlo, podéis hacer lo que queráis, y tocarlo, y mirarlo, y tal, no deja de ser lo mismo que explicado hasta ahora, pero puesto aquí. Perfecto, y ahora, los tips, tips, tips buenos, que van a hacer, que hagáis un bloque bien, en condiciones, tal, esto ya es el plus, ¿vale? O sea, la respuesta a la pregunta extra, ¿vale? Con WP Click, ¿vale? Si no sabéis que es WP Click, es abrir un terminal y escribir WP, ¿vale? Bueno, tener la libre instalada, tener... En realidad, escribiendo WP Scuffle Block, con prueba es el nombre que le vamos a dar al bloque, y si le pasamos guion-guion-plugin, nombre del plugin nos va a crear ese bloque en el plugin que nosotros queramos de nuestra instalación de WordPress, ¿vale? También se podría hacer en un tema, pero se pueden hacer en plugins, temas, plugins, ¿vale? Pero esto está muy bien, ¿vale? Y os va a pintar con los archivos que hemos hablado, ya referencias entre ellos, simplemente vosotros en el plugin tendréis que llamar al fichero que cargue, hacerle un include para que quede incluido dentro de todo. Pero un pasito más, con node, ¿vale? Si vosotros en terminal escribís npm main need y os bajáis esta librería, o no sé, creo que sí que librerías la palabra correcta, ¿eh? Perdóname si cambio términos. En fpm need y le pasamos el template s5, ¿vale? s5 es el JavaScript que más vamos a entender si no conocemos mucho las técnicas nuevas, ¿vale? Y le ponemos prueba plugin click, esto directamente nos va a crear un plugin que incorpora este bloque, ¿vale? O sea, tenemos mucha faena hecha, después, simplemente tenemos que entrar en el bloque y cambiar las cosas en el edit o cambiar el render callback, ¿vale? Y ya lo tendremos. Si tenéis hecho un shortcode, podéis variarlo un poco con el copiar pegar o coger el que os pasa de prueba y utilizar los select controls, los input controls, los componentes. Y aún mejor, si utilizáis npm need y no le pasáis nada, ¿vale? Aunque sea terminal, os va a hacer una interfaz que os va a preguntar para rellenar todas esas cosas fáciles, el icono, el nombre, el identificador, os va a preguntar dónde lo queréis instalar y además os instala los nodes, ¿vale? las librerías nodes para poderlo transpilar automáticamente, ¿vale? Una vez nosotros éste habéis hecho el bloque con el plugin y entrais dentro, ¿vale? vosotros con npm rule, ya no me acuerdo, vp start, vp scripts, vp, no sé exactamente cuál es, la documentación la tenéis justo ahí, pues directamente os va a coger el JS que vosotros hayáis escrito en JSX y os lo voy a pasar a una carpeta buena build que lo contiene ya, leíble para todos los navegadores, ¿vale? Si todo esto se os ha hecho o bola o podéis volver a leer la presentación, verla con tranquilidad y os recomiendo que de las vp block talks os veáis este vídeo, son 11 minutos. Veis, oíis podcast mucho más largo, estos son 11 minutos y os va a explicar todo muy bien y además de la vp block talks que estuvo genial. Vale, yo he sido Adrián Cobo, aquí tenéis mi Twitter, Adrián Cobo como ha hecho Nora, soy desarrollador web especializado en WordPress y PrestaShop, hace 8 años fundé con dos socios gráficos StudioWeb que hacemos diseño, marketing digital, comunicación online y especialmente yo, que soy el jefe de desarrollo con textos de los foros de soporte como Adrián de Graphery que es más, mañana voy a estar en la mesa de soporte en el contributo, o sea, al Venice y nos ponemos ahí a resolver todo organizo luego los pegranarios con Esther Sola y con Raúl Martínez las aficiones de la música Retro Gaming y si me habláis de cómics y manga pues no me vais a callar la boca. Además estoy procrastinando, hay perdón, haciendo un podcast con Fernando García Rebollón que se llama El Arroyo Deb, el primer podcast rural de desarrollo web y hasta aquí muchas gracias y ahora, Mat, ¿quieres añadir algo? Vale, pues muchas gracias. Oye, fantástica la charla y encima me ha dejado quedar fatal porque ha sido súper en tiempo, es decir. Ya lo siento, creo que al final he conseguido ir a las mismas palabras que a Guahari. Ah, es todo bien, bueno, así, allí como un poco de irse arriba pero ha estado muy bien, ha estado muy bien. Vamos a la fuerte. Ahora le vas a pedir a Marta que deje los coches y que lo haga todo en bloques. Yo no tuve que pedírselo, ella lo hizo sola. Ah, que bien, muy bien Marta, bien. Estoy encantada porque en las charlas, al menos las charlas que viste que me han tocado es un montón de gente. Hay muchas profesiones diciendo hacer esto y aquello que es más usable y más accesible. Os ha poseído el diseño y ya estoy súper feliz. No hombre, claro, hay que pensar siempre en un usuario final de hacerlo más fácil. Yo los coches, pues mira, eran fáciles de utilizar, se le podía pasar al cliente pero yo no me sentía cómodo mucho. Había clientes que me decían, no, es que me estás enseñando a desarrollar. No, no, te estoy enseñando a poner dos comillas y un igual, ¿eh? Ya, pero yo lo entiendo porque yo, por ejemplo, en mi vida de implementadora, yo en GeneXus es como, es que quiero cambiar tal cosa, ya, pues tienes que ir allí y yo pensaba, si solo es cambiar una URL ya, pero bueno, si no es tu trabajo, o sea, no sé, no sé lo que es. Yo arriba la usabilidad, a tope. A tope, a tope. Bueno, pues vamos a aprovechar que nos has dejado tiempo para preguntarte cosas. Ahora preguntad, ¿eh? Ahora no me dejéis aquí a lo loco dando yo la chapa. Pues mira, te voy a dar las preguntas de Carlosid y nos dice que el builder, entiendo que el bloque no funcionaría. ¿Hay alguna forma de crear tanto el shortcode como el bloque y compartir el código o hay que trabajar dos veces? No, sería muy fácil, ¿vale? Si... A ver, si me compartes la pantalla Francesc, nuestro realizador, un aplauso para él, bien. Vale, muy bien. Yo supongo que me estás compartiendo, ¿vale? Aquí tenemos un shortcode, ¿vale? Mis queridos shortcodes que llama a esta función, ¿vale? Y si te fijas aquí hace shortcode chats que le está pasando una array de atributos, ¿vale? Y aquí pasan cosas, ¿vale? Si estas cosas ya le estamos pasando un atributo, ¿vale? Yo aquí abajo tengo una función que exactamente hace lo mismo que esta, ¿vale? Si esta función de aquí abajo es el render del bloque y yo esta función los atributos ya los tengo puestos, ¿vale? Para que el content llegue como un atributo más a esa función ya podría utilizar las dos cosas y que congeñaran en lo mismo. ¿Vale? Creo que hasta aquí la respuesta. A ver, vuelvo aquí. No sé si supongo Carlos, espero que haberte respuesto la pregunta y si no nos vemos en el Zoom. A PageBuilder, pues claro, los PageBuilder me encuentro, ¿eh? Con temas que hay que los shortcodes es que es lo que hay. Es que si te da una zona de HTML le tienes que poner un shortcode. No hay más que hablar. Ya todo llegará, todo llegará. Estamos ahí, que los bloques están viniendo ahí despacio. Van a llegar. Os puede resistir, pero ya llegaron igual. No, claro, en 2015 ya lo dijo nuestro querido Matt. Ahí lo tenemos, no nos deja nunca. Bueno, vamos con la siguiente pregunta. Esta la hace Néstor López. Dice, ¿hay formas de validar si el tema o el usuario tiene instalado o en uso Gutenberg o el clase de editor para enviar los shortcodes o bloques? Sí, sí. A ver, perdona. Sí, claro. Podríamos, o sea, simplemente puedes buscar si el plugin es activo. Si el plugin está activo, te hago una cosa. Si no está activo, haga otra. Piensa que si no tiene Gutenberg tiene el classic editor. Igualmente, es que todo el mundo con Gutenberg hay un bloque que es classic editor. Quien de verdad no tenga ni idea que coja el primero, que ponga classic editor y que pinte ahí todo lo que quiera. Hay que se sienta cómodo como en el 2008. ¿Sabes? Pero... Bueno, ya lo tenemos. Está pensando yo en 2008 cuando salíamos de casa. No me olvidéis que Nora está aquí viendo las preguntas, pasándose las a... Bueno, estoy rompiendo la magia. Sí, un poco. Lo estoy viendo muchísimo y... Lo están petando. Vamos con la siguiente. ¿Cómo abordarías el tema de usar un bloque en widgets? Mira, voy a hacer como ayer nuestro querido Matt. Matías? Es que es... Joseín, esto va a ser una de las cosas que están implementando, que entran en fase 2. ¿Sabes? No es que yo lo tenga que abordar. Es Matt, yo ni me estoy preocupando por eso. Es que tampoco no me paga automático para preocuparme de eso, por lo tanto sé que están trabajando en ellos, que lo van a abordar, que los widgets se van a convertir en bloques. ¿Cómo lo van a hacer? Pues no lo tengo del todo, claro. Pero... llegará... llegará en breve, porque en 2020 era la fase... 2022, la fase 4. O sea, que la fase 3 le quedarán el año que viene, finales pero en principio deberían estar ahí. Madre mía, decir la fase 3 el año que viene me da como una ansiedad de repente. Bueno... Lo siguiente pregunta es de Carlos Longarela. Nos pregunta... ¿Tú ya nunca usas shortcodes? ¿Enviarías el infierno de PrestaShop a quien los utilice? ¿Dónde puedo conseguir ese code excirmado por Matt? Carlos, ¿sabes? Que... yo utilizo shortcodes aún. Pero porque muchas veces no hay otra posibilidad. ¿Vale? Pensad, los shortcodes. ¿Vale? Antes se lo daba al usuario para que pudiera editar cosas. Con el método que he explicado, se lo podemos dar igual y mucho mejor. ¿Vale? Si lo que queremos y lo que hacíamos era un shortcodes sin propiedades y sin cosas, ahora tenemos los bloques reusables. ¿Vale? Que muchas veces ya nos podrían valer para pintar esa información. ¿Vale? ¿A quien use shortcodes? Pues no es cuestión de enviarlo a un infierno o otro, simplemente incentivarlo a que se venga al lado positivo de la fuerza. Al lado luminoso de la fuerza. ¿El code excirmado por Matt? Pues no sé, yo es que como tengo aquí a Matt... ¡Ya está on de macho! ¡Todo el día con él! Pero sí, vino aquí a casa a firmármelo él. Sí que tengo las celebridades aquí. Bueno, vamos con la posiblemente última pregunta, dependiendo de cuántos te enrolles. ¿Vale? Bueno, felicidades por la charla. Nos dice Raúl Beled, perdonad si no pronunció bien los apellidos. Justo estoy desarrollando con este tema esta semana. ¿Se puede consultar una API para rendidizar un bloque y grabar el HTML final como un atribut, ¿verdad? Sí, se puede, todo se puede, todo se puede. Raúl, es muy extenso a la documentación, ¿vale? Hay, se puede, dentro de los componentes que he explicado y los elementos que le dan la magia de Gutenberg, ¿vale? Pues allí hay componentes que llaman directamente a la API y se le pueden conseguir las cosas dinámicamente, ¿vale? Y entonces pintarlas. Lo único que piensa es que si nosotros en el front vamos a quedar al final una cosa dinámica, ¿vale? Pongamos el látes post el último post publicados, ¿vale? Eso al final utiliza el mismo sistema que he hecho yo, porque como en la parte final se renderiza dinámicamente pues necesitamos que sea PHP quien renderice eso al final pero si nosotros queremos también en la columna de la derecha tener cosas dinámicas pues podemos consultar la app y tener ahí las cosas, por ejemplo los post types disponibles o el listado de posts para llamar a uno concreto. Pero haber repuesto la pregunta y si no, Raúl, nos vemos en el Zoom, ¿eh? Que vamos justisimos, perdón. Sí, no, ha tenido que estar la última porque ya hay que pasar al siguiente ponente pero nada, muchísimas gracias por haber conseguido meter tu súper taller en esta charla de 20 minutos y ha sido un necesito así que nada, cuando quieras repetir en otra work, es seguro que estaremos encantados. La siguiente la siguiente física, por favor Adiós, adiós.