Ponentes: Francisco Torres, Paco Marchante y yo, David Pérez
Tuvimos la oportunidad de estar en la WordCamp Madrid 2025 compartiendo un taller donde enseñamos a crear un plugin en WordPress desde cero. La idea era hacerlo sencillo, dinámico y adaptado al nivel de cada persona en la sala, así que lo planteamos como un paso a paso práctico.
¿Por qué estáis aquí?
Empezamos con una pregunta al público: ¿Quién ha creado un plugin alguna vez? ¿Quién tiene uno publicado en el directorio? Hubo algunas manos arriba, pero muchos venían con ganas de aprender. Así que bajamos el nivel y arrancamos desde lo más básico.
Primer Paso: ¿Qué es un Plugin y Cómo se Publica?
- Un plugin es básicamente una pieza de código que añade funcionalidad a WordPress sin tocar su núcleo.
- Explicamos cómo funciona el equipo de revisión de plugins, del que formamos parte, y mencionamos que se revisan unos 35 plugins al día.
- También repasamos las reglas básicas que debe cumplir un plugin para ser aceptado en el directorio.
Segundo Paso: Creando el Plugin con WordPress Playground
- En lugar de complicarnos con entornos de desarrollo, usamos WordPress Playground, una herramienta que permite crear un WordPress en el navegador sin instalar nada.
- Explicamos cómo guardar los cambios y trabajar con Blueprints, que nos permiten personalizar la instalación con plugins y configuraciones predefinidas.
Tercer Paso: Haciendo que el Plugin Funcione
- Creamos el plugin en directo, explicamos cómo organizar los archivos y escribimos el código básico.
- Hablamos de Hooks, diferenciando entre Actions y Filters, y cómo usarlos para modificar WordPress sin tocar su código.
- También explicamos la importancia de la sanitización y escape de datos para evitar problemas de seguridad.
¿Y Ahora Qué?
- El plugin ya estaba hecho, pero ¿qué más? El público quería más. Así que hablamos de cómo publicarlo en el directorio de WordPress y qué revisar antes de enviarlo.
- También dimos algunos trucos sobre nombres de plugins, dependencias y buenas prácticas.
Cierre y Preguntas
El público se animó a preguntar de todo, desde cómo evitar errores comunes hasta cómo adaptar WordPress Playground para probar proyectos reales. Fue un taller muy interactivo y divertido, y nos encantó compartirlo con la comunidad.
¡Nos vemos en la próxima WordCamp! 🚀
[MÚSICA] Tengo el gran placer de presentaros a Francisco Torres, a David Perez y Paco Marchante. Francisco Torres participa en la comunidad desde hace ya casi dos años, contribuye en el equipo de revisión de plugins de WordPress. Trabaja como desarrollador. Es Andaluz de Graná. Exactamente. Le gusta el ciclismo, la natación, las tostadas con tomate y aceite. Aunque bueno, los chorros tampoco están nada más. También tenemos a David Perez, que participa también en el equipo de revisión de plugins desde 2023. Tiene además una agencia de marketing y desarrollo basado en WordPress. Me encanta el código limpio, las buenas prácticas y cuando nieva, pues sube corriendo a Sierra Nevada a practicar el esquí de fondo. Además, también organiza una carrera solidaria en Granada, en memoria de su padre. Y bueno, también tenemos a Paco Marchante, que es desarrollador senior full stack con más de 8 años de experiencia en CMS. WordPress, Prestasov y otras plataformas similares. También forma parte del equipo de revisión de plugins de WordPress.org. Ha sido organizador de las meetups oficiales de WordPress desde 2018 en Cádiz y Chiclana. Y también organizado eventos como la Workup de Chiclana desde 2020. Workup Spain, también desde 2020, entre otros. Y bueno, además ha sido ponente de distintos eventos. Así que bueno, yo dejo de enrollarme ya y os dejo a ellos buenas manos. Un fuerte aplauso, por favor. [APLAUSOS] Bueno, y por qué tanta gente aquí? Es que, bueno, hoy lo que vamos a enseñar en estas dos horas, lo siento, son dos horas, es un poquito larguito. Pero bueno, esperemos que todo auguste y tal. Vamos a enseñar cómo crear un plugin. Y vamos a empezar directamente, porque es que esto ya vamos a no perder tiempo, cuanto antes lo tengamos hecho, pues ya está. Entonces, el primer paso, porque esto en tres pasos se puede hacer un plugin. Entonces vamos a enseñarlo así. Esto a ver por dónde tiene, es que cada estropeón no es mío, donde están navegados. Mira, aquí entramos en chat GPT, paso uno. ¿Vale? Bueno, y a paso 2. Claro, el paso 2 bueno utilizando tecnología de última generación, ¿vale? Como es la Inteligencia Artificial, ¿vale? Sólo tenemos que escribir un texto simple. ¿Tú qué quieres hacer? Un plugin, yo quería hacer un plugin. Ah, vale, no lo he dicho que sea, ¿eh? Créame un plugin, ¿vale? ¿De qué quiere ir el plugin? ¿De qué lo quiere ir? No sé. Oye, un plugin. Sí, sí, sí. ¿Qué te pongas los metatíteles? No sé qué. Keyboards, que hay boards. Meta keyboard. Keyboard. Word. Joder, qué palabras. En las entradas, ¿no? A mí mismo. En la entrada, claro. Es optimista, sobre todo las keywords, ¿eh? Es que si no, si no las ponéis. Y tiene que decirle que es en WordPress. ¿He escuchado que no se utiliza? No. Yo qué sé. Ya, ya. Pero más allá, el título. Sí, sí. ¿Se ha dicho el título? Claro. Vale. Que también es título. Es el título. ¿Sí? Vale, pues ahora– Venga, voy a darle ley. Venga. ¿Tecés paso, no? No, sí. Ahora va, tercer paso. Al tercer paso. Al final, es el paso más importante, ¿eh? Sí, sí. Me habéis dejado para hacer. Sí, sí. ¿Y ya está? Bueno, ya no está escribiendo. Ahí está. Lo estás generando. Se ve bien, ¿no? Bien. Bueno, ahí está. ¿Me tiene meta aquí igual? Ya está. Ese es el código del plugin. O sea, que ya está el plugin hecho. Así que, bueno, pues muchas gracias por todo. Gracias, Pedro. [APLAUSOS] Ahí se un público acolente. Saludos. Saludos. Sí, sí. Oye, ha salido bien, ¿no? Ya hemos terminado. Ya esto. Ahora va la siguiente charla, ¿eh? Oye, Paco, creo que… Sí, sí, sí. No, ya tenés que ir por mi portátil. Sacra, ya he llegado a tarde. No, a ver, David, voy yo, lo recojo yo. ¿Qué haces aquí? Ya lo he terminado, ya. Estamos cansados. Ya hemos de ir. ¿Que siguen aquí? También. Pero, ¿quiere más cosas? Pero, ¿estás en? No entiendo. ¿Y si ya le hemos enseñado a hacer un plugin, qué más? Claro. ¿Un PRO? ¿Cómo se creen que ese programa en 2025? Eso digo yo. Pero, ¿vosotros? ¿A qué habéis venido? ¿Qué? ¿Qué? ¿Por qué es aquí? O sea, ¿qué espera es que hagamos? Aparte de esto, no sé. ¿Publicarlo? Ah, publicarlo, bueno, bueno, mira, puede ser útil. David, ¿dile a esta GPT qué publica el plugin? ¿Qué más preguntan una cosilla? Vamos a decir que lo publique. Bueno, y ya está. La cosa es que ya no hemos preparado nada más. No, pues, yo qué sé, dile… No, le estoy diciendo que lo publique en www.warpers.org. Vale, vale, vale. Mira, ahí está, enviar plugin para supervisión, en la página de subida de plugins, pues no me dé el plugin. Eso ya está, eso ya está hecho, porque lo ha hecho todo. Y una vez enviados, suelen tardar entre 2 y 7 días para probarlo bueno. Bueno. Bueno, no siempre, no siempre. Pero bueno… Es más rápido. Sí, sí, es verdad. Pero bueno, ya está, sí, pues, ya está. Si esta gente quiere más cosas, podremos más cosas. Así que, a mí, bueno, ya está. Vamos a sentarnos aquí, vamos a hacer algo. Quedan más sencillo. Más sencillo que eso. Bueno. Después de esta performa. Bienvenidos, señores, señores y señores y señores a este taller excelente para crear un plugin. Que va a ser todo adaptado a vosotros, porque realmente vamos a ver qué sabe cada persona, qué necesidades tenéis. Y estamos tres personas. Por eso estamos tres, porque para poder dividirnos gente que tenga menos conocimiento de programación, gente que tenga más y adaptarnos a cada caso. Y bueno, vamos a empezar presentándonos un poquito, aparte de lo que ya ha comentado el compañero. Pues yo mismo que estoy hablando, pues soy Francisco Torres. Sí que realmente creo que nos presentamos los tres al mismo tiempo un poco, porque los tres estamos en el equipo de plugins de volpes.org. Somos de las personas que revisamos los plugins que se suben al día de estudio. Y queríamos hacer este taller. En todas las cosas, porque lo hicimos en Sevilla y salió bien. Goto mucho. Y sobre todo para enseñar a gente cómo hacer un plugin y que ese plugin pueda formar parte luego del repositorio o el directorio de WordPress. En el directorio hay unos 60.000 plugins. Pero como comentamos ayer, pues 60.000 uno, pues está bien. Al fin y al cabo, yo considero que contribuir con un plugin a la comunidad es una forma de contribuir a WordPress. Así que bueno, es algo que podías hacer. Claro, a ver, yo creo que también tendríamos que empezar un poquito bajando totalmente el nivel a ver si alguien no sabe que es un plugin que puede pasar. No hace un par de preguntillas, ¿no? Claro, las típicas preguntillas. Oye, alguien no ha programado nunca, nunca ningún plugin para WordPress, el levanté la mano. ¿Y alguien tiene un plugin subido en el repositorio? ¡Oh, nada mal! Pero el resto tiene que publicar el plugin. Y el resto hay programas plugins, por lo que estoy entendiendo, ¿no? ¡Y sí, sí, sí, sí! O dedica a WordPress activamente con código o otra materia. Vale. Aquí, sobre todo, como comentaba Frank y David, vamos a ver un repaso entero desde la creación de plugins, desde los puntos básicos hasta los puntos más avanzados. Como somos 3, nos podemos dividir y podemos hacer una enseñanza más activa, no solo aquí viendo la pantalla. Y bueno, ¿cuánto de ustedes también tiene importate? Le pasa aquí la sesión y demás. ¿Sí, hay importate? Sí, porque realmente la idea es que sea un poco taller, que tenga ese portátil que hagáis, sé que tenéis poco espacio disponible para poner el portátil, pero bueno, lo podéis poner entre las piernas, luego se oscalienta los cachetes. No, no, tenéis una mesa. Ya, pero la mesa es… No, no, no, pero la segunda fiel es tan bien. Ah, la mesa, eh. Bueno, lo que te dices te me da si querés pasar a la segunda. Normalmente no sé, dice, todas las charlas, pero si hay mejoras mesas, sentíos libres de pasado. Claro, sobre todo también comprender el tema de… Bueno, ¿qué es un plugin, claro? Aquí tenemos la definición textual de qué es un plugin. Claro, esta es la definición textual de qué es un plugin. Afinar es algo que hace diferente o que te añade a Word. Lo más popular es el de Tienda Online, que crea una Tienda Online con un plugin y a partir de ahí puedes tener formas de pago, formas de envío, con plugin aparte. Al final añade una funcionalidad, de hecho lo que comenta David en el directorio cuando nosotros revisamos plugins que estamos recibiendo del orden de 30, 40 al día era. 35 al día. Sí, sí, pues imaginado, eh, 25 al día. Por ejemplo, muchos llegan de pasaderas de pago para para integrarse con Bookomers, y bueno, llegan de muchos tipos en realidad, ¿no? Pero la cosa es, fijaos, si hay cosas, integraciones y gente que piensa cosas distintas, o distintas integraciones con distintas cosas, por el final ya se integra todo con todo, para 35 nuevas ideas de plugins cada día. Es verdad que algunas veces son repetidas la idea, pero… Hay gente que no es original. Oye, pero ¿qué es esto del equipo de revisión de plugins? ¿Qué es el equipo de revisión de plugins? ¿Qué es el equipo de revisión de plugins? ¿Qué hace el equipo de revisión de plugins? ¿Quién no sabe? ¿O quién se sabe? Claro, es muy fácil. ¿Pero por qué? El por decir “revisión plugins”. Es bueno. ¿Por qué se aprecie? Porque se podría subir el plugin, y bueno, la hemos subido, y se descarga mucho usuario. ¿Por qué hay personas detrás, y manualmente, revisando el código? Al final es un poco… para que haya cierto control en lo que se publica, y sobre todo hay tres cosas que son claves. Seguridad, compatibilidad y cumplimiento de las normas del directorio. Hay unas ciertas normas que al final acabo de hacer, que sea software libre y que no haga nada malo, y luego es súper importante que sea seguro. Que sepamos que ese plugin, si se instala en un sitio WordPress, que el sitio no vaya a ser hackeado en tres segundos. Entonces, por eso se hacen estas revisiones, y ese contior también posterior, cuando ya está publicado. La base de los plugins, bueno, hay un handbook gigante, que os animo a que lo conozcáis, porque se aprenden muchísimas de desarrollo. Y dentro de aquí hay una sección, que es la que hacía un poco… una referencia a él, la directiva o lo guidelines, para poder publicar tu plugin. Vamos a ver un poquito… Esgeramente. Esa es la norma que tiene que cumplir cualquier plugin, que es que la hay publicar dentro del repositorio, para ser hackeado. Esa son las normas básicas que tiene que cumplir, ya aparte de que esté bien programado. O peor, bueno, que cumpla con un mínimo de seguridad, y demás que, bueno, para eso ya también está el equipo nuestro, que revisa uno a uno todos los plugins que se suben, se intentan publicar, hacen la petición de publicación, dentro del repositorio, y todo esto se revisa uno a uno por un voluntario, ¿vale? Luego repasaremos también cuáles son los errores más básicos, los errores más básicos, los que repiten son los más comunes, pero con esto digo una cosa, no rayéis. Yo creo que todos nosotros, estos errores los cometíamos a diarios, hasta que entramos también en el equipo, donde aprendes. Yo creo que el mayor exponencial de aprendizaje fue también cuando entramos, por eso no os preocupéis si cometéis estos errores, porque son errores que cometemos todo el mundo a diario, ¿vale? Bueno, en poco a poco irán montrando materia, pero básicamente las mayores directrices de seguridad es cuando en nuestras funciones recibimos información o sacamos información que pasen por un proceso de sanitizado o de escapado, ¿vale? Eso es, digamos, las dos más importantes para que, digamos, no recibamos codidos maliciosos y los ejecutemos y bueno, y al hacer récord los ejecutemos, entonces estamos sirviendo a los usuarios codidos maliciosos que estamos creando. Para todo esto, ¿vale? Teníamos pensado mostrar primeramente WordPress Playground, porque todo el mundo tiene un entorno de desarrollo, y vamos a enseñar también un poco Playground, que es una herramienta que os va a servir muchísimo, ya no solo para la hora de desarrollar, sino también a la hora de realizar presentaciones a clientes o hacer cualquier tipo de testing, de código, de cualquier plugin o código que no lo queráis meter directamente en vuestro equipo, ¿vale? Hay una charla de Playground a las 12 y media, así que ya no tenéis ningún motivo para ir de aquí. No, es que la tenás cuidado. a que directamente la… ¿dónde acústela? Encuentra. Ya weonchado una primera. Se van a chalar de playground. ¿Por qué? ¿Por qué nos haces esto? A ver, no sé… Bueno, mientras que no conozcas qué es playground… ¿cómo lo explicamos? Es magia. Toda esta historia de… cuando te decís, vamos a montar un sitio web en WordPress. Y empezamos con el reorrollo MySQL, el IPHP, no sé qué… ¡puf! ¡qué cansado eso! Pues playground es un WordPress que se ejecuta en tu navegador. Y tú haces así, ¡pum! y aparece un WordPress y dice ¿dónde aparece el WordPress? Y el WordPress lo tiene en tu ordenador, te lo han metido, te lo han inyectado en WordPress y se ejecuta desde tu ordenador. Y haciendo un pequeño proceso puedes hacer que los archivos de ese WordPress se guarden en una carpeta de vuestro ordenador. Así que cualquier cosa que cambiáis, ahí se aplica en el WordPress. Es verdad que tiene algunas pequeñas limitaciones, con algunas cosas, hay algunas cosas que no funcionan, pero la mayoría sí. Vale, esto que veis en pantalla ahora mismo ya sería WordPress Playground, ¿vale? Para saber es muy, muy, muy sencillo, lo único que tenemos que buscar. WordPress Playground en Google y va a salir el primero o el segundo, ¿vale? Es súper sencillo, igualmente la URL es playground.wordpress.net, no .rg, ¿vale? .net, porque .net es el saco de pruebas de la comunidad, ¿vale? Aquí donde en .net hay un montón de proyectos que se están desarrollando, que se están haciendo pruebas. Y ahora mismo también es donde se aloja WordPress Playground. También Playground lo podéis ver cuando veáis un plugin en el director de plugin, que es el Live Preview. Eso lo que hace es que monta un Playground con el plugin que estás viendo. Esto también es muy útil para probar plugins sin tener que… Porque muchos plugins crean tablas o crean modifican base de datos, justo al activarlo. Entonces, puede ser muy interesante para probarlo y no ensuciar tu web, usar Playground para ello. Vale, con Playground como estáis viendo, ahora ya tenían, digamos, una instalación de WordPress totalmente funcional. O sea, esto está corriendo ya directamente en navegador, ¿vale? No tengo nada descargado, no tengo nada. No activa ningún servidor Apache ni en MySQL, ¿no? Yo no activa nada. O sea, si creí o lo enseño, pero aquí… Mira… Yo aquí no tengo… ¿Cómo era aquí? En Forzad… Forzad… Forzad Salida, para que veáis que no estoy engañando, ¿eh? Aquí yo no tengo nada. El Spotify y el OnePower para que me recuerda la contraseña y poco más. Vale, esto está directamente en el navegador, ¿vale? ¿Cómo se llama… con WebAssembly, ¿no? WebSuppers, ¿no? WebAssembly… La tecnología está detrás de la webSuppers. Claro, y bueno, esto directamente es una tecnología que nos permite ejecutar código directamente en los navegadores. En este caso ya se está desarrollando con PHP y SQLite, ¿vale? Que por eso todo el proyecto de WordPress que se estaba haciendo con SQLite era sobre todo para poder implementar Playground, ¿vale? Aquí tendremos una instalación totalmente funcional, ¿vale? Os voy a dar unos pequeños consejos súper rápidos, porque es lo primero que os va a romper un poco, da un error, ¿vale? Que es que cuando queramos instalar un plugin, aparte de el Odoli que viene siempre, ¿vale? Os va a dar este error, ¿vale? Que está diciendo que es que no tenemos conexión fuera, o sea, no tenemos conexión a Internet, voy a hacer un poco de zoom para que se vea igualmente. Ya estamos aburriendo un poco, ¿vale? Pero bueno, se os fijáis, ¿vale? Si lo leemos, igual que la informática, la informática es 90% le lo que pone en pantalla, ¿vale? Que es que… Seguir las instrucciones. El problema es que nos hacemos los listos y nos queremos leer. Esto ahora mismo no tendríamos conexión a Internet y es súper sencilla arreglar. O ponemos esto en el JSON, ¿vale? Que ahora os lo explicaré. O nos vamos aquí, ¿vale? Donde por usarlo. Lo vuelvo a repetir por si no se ha visto en este botóncito de aquí. Pasó la acción del Playground que está cargando en el momento. ¿Vale? Por cierto, que nos tengáis importante y podéis seguir el proceso porque esto os va… O sea, podéis usar esto ahora para desarrollar el plan. Claro, hasta en el móvil podría hacerlo. O sea, el Warp Playground se va a abrir en el navegador, pero en cualquier navegador, ¿vale? Y aquí lo guay que pasé testing y pasé presentaciones a clientes y demás, es súper útil, más que nada porque podemos configurar Warp como queramos. ¿Vale? ¿Cómo activo eso? Oírá, aquí tengo la opción de permitir la conexión a la red y ahora lo único tendría que aplicar y resetear Playground. Playground se está borbiendo a cargar, está generándome de nuevo ese WordPress, ¿vale? Está regenerando entero, o sea, está generando otra instalación con estas opciones. Entonces, ya cuando me vaya aquí a plugin la tema, ya voy a poder encontrar, ¿vale? Me voy añadiendo nuevo y ya tengo conexión a Internet, ¿vale? Y ya podríamos hacer instalaciones de cualquier tipo de plugin, o sea, podemos instalar el que queráis, ¿vale? ¡Paco, pero esto cuando cierre el navegador se pierde! Claro. ¿Pero qué no? Yo no me sirve de nada. No me sirve. Bueno, es que le hago. No lo quiero. Ni que yo lo hubiera inventado. (risas) Claro, vamos a dar un poco la demostración, pues el Aqinme, ¿no? O sea, el Clasy Editor que queráis, podemos instalar cualquier plugin. Mira, activo este, ¿vale? Aquí lo tenemos. Entonces, si yo recargo, me cargo la instancia. ¿Vale? Es la memoria del navegador. O sea, creo que era cuando recargaba. ¿Lo ves? Me cargaba. O sea, ya es otro WordPress totalmente nuevo, ¿vale? Eso tenerlo en cuenta. Cuando recargáis es un WordPress totalmente nuevo. O sea, regeneraba, ahí es una instalación nueva y ha montado todo. Ojalá hubiera una forma de evitar eso. Pues la hay. ¿Cómo? Sí. Con WordPress Playground y su memoria podrás tener tu WordPress guardadito aquí todas las veces que quieras. ¡Oh, eso es muy bonito, Paco! ¡Sí! ¡All right! Es súper sencillo guardarlo, ¿vale? Le damos los tres puntitos, ¿vale? Y lo podemos descargar, ¿vale? Ah, incluso lo podemos guardar. Pero ahora no me sale la opción porque no yo nada todavía. Entonces, por eso tengo primero… Ah, bueno, sí, es que está ahí. Es que nunca lo veo. Ha cambiado. Ha cambiado mucho la interfaz. Claro. Va cambiando. La habéis visto vosotros antes que yo. Vale, porque antes estaban en los tres puntitos, ¿vale? Pero aquí, cuando hagáis cualquier cambio, cualquiera, ya va a salir aquí de… Esto es un… Os avisa que es una instancia temporal de Playground. Otra vez que le es, ¿no? Es lo que nos dice. Claro, claro. Es que… ¿Qué me ha pasado? Que yo he ido delito y no he leído lo que ponía, ¿vale? Entonces, si nos vamos aquí, ya está diciendo que, oye, si quieres guardarlo, podálelo al botón. Y lo podemos guardar. O en el navegador, ¿vale? O en nuestro local. Si lo guardamos en nuestro local, lo potente de esto es que nos va a crear toda la instalación de WordPress, o sea, toda la estructura de carpetas y que podemos hacer con todos los directorios, pues lo abrimos en Visual Studio Code y podemos empezar a desarrollar como si fuera un entorno de desarrollo. Pero lo potente es que no vamos a tener ni apalles donde necesitamos un servidor local. Muy gusto. Y tú vas abajo, porque cuando no estamos en un portal general nuestro, pues nos permite ahí estamos haciendo, por ejemplo, grabar los archivos a la carpeta local. Es súper útil para hacer talleres de creación de plugins. Sí, ahí está. Oye, mira, si está un taller de creación de plugins. Vale, y aquí voy a intentar llamar algunas opciones de más, ¿vale? Como voy a borrar esta instancia completa y demás. Y bueno, aquí ya podemos hacer lo que queramos. Lo bueno de Playground, que todo esto se genera con unos JSON que se llaman Blueprints, como lo han llamado, y le podemos dar a verlo. Y aquí tenemos el código de todo este, esta instancia de WordPress. Aquí podemos poner instalación de plugin, instalación de tema y podemos preparar una instancia completa con nuestro, con el WordPress que queramos. ¿El plugin que normalmente usas? Sí, claro, claro. Si tienes tu Blueprints guardado, lo pegas y ya automáticamente inicia la sesión con los plugins que tú quieras. Esto también es muy útil para hacer testing. Vale, los nuevos testing unitarios que se hacen en los plugins se utilizan por debajo o Playground. Entonces es más fácil porque los plugins siempre se utilizan con WordPress limpios para que no entre en conflicto con otros plugins. Claro, y lo bueno que esto, que no solo tenéis que limitar a lo que es tema de los plugins de repositorios y que no, que podáis poner cualquier plugin que esté en una URL pública. O sea, vuestros hijas, cualquier cosa podéis ponerlo. Entonces, imaginarse tenéis toda la instancia de un cliente y si queréis hacer una demo lo podéis hacer perfectamente con esto. En la empresa donde hay trabajo tenemos un sistema ya automatizado donde estamos con Playground, haciendo demos a los clientes con prácticamente la web de ellos porque también podéis poner automatización de contenido, automitación de página, de creación. Entonces, el momento de que lanzáis el Blueprint, te crea una instancia completa de WordPress con todo el contenido y todas las cosas que queráis. De hecho, Blueprint se usa también mucho para cuando vaya a publicar un plugin en el director de plugins. Ese LivePerview, bueno, hubo un tiempo que se activó por defecto, pero ya no ahora tienes que activarlo tú. Tienes que dejar un archivo en la carpeta de Asset. Y, por ejemplo, si ahora es un plugin que necesita Google Comer, pues digamos que utiliza un elemento o cualquier otro plugin, utilizar los pasos para que te deje la instalación al usuario como querías que te gustara. A ver si tenéis alguna duda y preguntando. Mira, tenemos una duda. Espérate, espérate, el micro. Sí, sí, para que te hayas grabado. Claro, para que se grabe. Sí, sí. Para que haya poterlo luego. No, yo os quería preguntarse si existe, por ejemplo, la opción de exportar ya una instalación que tengamos ya hecha con plugins y con temas del cliente a un archivo así para reutilizarlo. Mira, es una buena idea para un plugin. Hace un plugin. Claro. Mira, así que… Claro, más que nada, si ya quieres partir de algo que ya está hecho y quieres probar pues eso, una actualización en la web del cliente. También en el Blueprint puedes meter URL exacta, que se las descarga Wordp en ese momento y puedes hacer plugin extend o cualquier otro tipo. Entonces no se puede descargar algo que ya… Un Wordp es completo. No, sí, yo entiendo que lo vas a poder hacer a mano. Vale. O sea, de tipo de que si estás a la Playground con tu directivo de locales y luego metes ahí los archivos y luego importas la base de datos, pues entiendo que podés llegar a hacerlo. Vale. Pero no sé si… Seguramente puede que haya un plugin que tenga para hacer eso. Por ejemplo, algún plugin de backup que permita importar a la Playground. A ver, Automatic Studio, que es el software que han sacado de local para… Está basado en un Playground realmente y permita tener instalaciones de Wordp en local y te puedes instalar la base de datos, los plugins y todo. O sea, quedan como paquetizadas para que puedas usarlo. Vale. Claro, la forma fácil también es montar toda la instancia aquí y los portas. Porque una vez que nosotros vamos instalando plugin, que es lo que estás haciendo, ahora yo esto puedo descargármelo, exportarlo a GitHub directamente o ver el blueprint de lo que he creado. Vale. Estos aquí no podemos hacer todo. Vale. Lo pasa, tienes que ir guardando la instancia para que se vaya generando el blueprint, sino no se genera. Igualmente aquí, si te fijas, vamos teniendo todo el JSON que se va montando. Igualmente hay un montón de ejemplos aquí. Si vas aquí en GitHub que lo tenían mordemos. O te vas aquí y aquí hay un montón de demos ya montadas por el equipo de Playground. Para usar blueprint. Esto ya te digo, esto utilizado y automatizado para afinar una cadena de JSON. Puedes montar con un poco de código, puedes montar aquí automatizadores de… De hecho el JSON tiene steps. Tienes como steps, pasos o pasados, puedes incluso decir que, por ejemplo, quieres que directamente cuando se instale ese plugin, pues que vaya a la página de ajuste de configuración, le puedes especificar donde quiera que vaya. Y aparte te puedes lanzar también código PHP, o sea, tiene un comando de run PHP y puedes emitir código. O sea, es muy útil para hacer demos. Vale, vale. Es otro que hace Playground, por ejemplo, es bastante interesante. Muy bien. Pues muchas gracias. Entonces Paco, entonces tú tienes el Playground que es como un específico entorno local, pero como hago yo un plugin, ¿dónde encuentro yo los archivos de WordPress? O sea… Vale, pues a ver, lo que podríamos hacer es descargar este Playground, pero vamos a descargarlo local. Ya lo tenemos en el navegador, ¿vale? Pero estás subiendo un zip todo el rato y demás, es un poco tedioso y demás. Así que lo que hacemos es descargarlo a lo que es un… Un director local. Ahí está. Sí, pero lo tienes inclinizado ya con un directorio, ¿no? Sí, a ver, ¿no? Ah, claro, pero claro, este directorio lo hemos guardado directamente en navegador. En navegador, ¿no? Ahí está. Vale. Que no esté en eso. Y en vez de hacer lo que hemos hecho antes, de guardarlo en el navegador, pues vamos a guardarlo en un directorio local. Y aquí… Puedes ver con las carpetas… Le vamos a apacar todo el archivo. Uuuuh… No, el refierta no lo toque. ¿Qué? El refierta no lo toque. Que sea el más peligroso. Uuuuh… No, no, creo que no tengo nada. Bueno, no tienta la suerte. Y vamos a hacer una carpeta nueva, ¿vale? Warp Pre. Ahí está. Vale, seleccionamos. ¿Qué te pasa? Te voy a pedir una foto. Ah, sí. Y ya me estás creando toda la estructura de carpeta de Warp Pre, ¿vale? Que necesita playground para ir funcionando. Esto puede tardar más o menos. Pero no es lo que es, es verdad que los Windows, como los directos, como funciona el administrador de archivos de Windows, va un poco más lentillo, que Linux o Mac, sí que es verdad que lo que vimos en anteriores talleres puede tardar un poco más. Pero no os preocupéis que esto va creando solo, ¿vale? Igualmente, ya me ha dicho que lo tiene. Aquí está Solito Warp Pre. Y si os fijáis… ¿Puedo darles más zoom? No. A ver… ¿Puertemente seré, no? No, a menos. Claro que no estoy mintiendo. Aquí ya tenemos un Warp Pre creado, ¿vale? Y este Warp Pre está conectado directamente con el playground de antes. Entonces, ahora mismo ya tengo un entorno de desarrollo. O sea, que así es decir… No, es que es un cominuto. Vamos a tardar más de explicar lo Paco, pero que lo explico a mí no te… Pero porque nos enrollamos un montón, no, por eso. No, por eso. A ver, ahora en Visual Studio… Visual Studio, ¿o es que vosotros utilicéis, ¿vale? Hostia, así me está actualizando el Visual Studio. Lo bien ofertaba. Nos fíamos. A ver, voy a darle zoom. La vaya está confiado por la vida. Entonces, tenemos ya aquí un Warp Pre con su admin, su content… No, con todos. No, no, aquí está todo. Es una maravilla. Sí, sí, sí. ¡Ahora veis mejor! Conocéis un poco cómo se estructuran los archivos de Warp Pre, bueno, lo explicamos para quienes no lo saben, para que alguna que no lo maneje tanto. Os digo, respecto a esto, ¿vale? Oye, no tiene pudor en pregunta, porque es el momento de preguntas. No, no, no. Cuando salgamos, no. Ahora, cuando salgamos, que no respondo ni una pregunta de Warp Pre, ni de… Ni de plugin, ni de plugin. Nosotros cerramos el sigo en cuando salgamos. Ahí está, ¿vale? Pero que… Oye, aprovechar lo que es el momento, porque hay un “tormo” porque también le decimos porque tomo todo esto también en la posición de estar escuchando y da corte de preguntas, pero aquí estamos para darle sarseo, ¿vale? Sí, sí. Este taller, como comentaba antes, lo hicimos en Sevilla. Y hubo muchísima interacción entre otras cosas porque eramos menos gente. Eramos como 15 personas, entonces era como más cercano y tal. Aquí, como es tan escenario y tan… Para mejor, da un poco de corte, pero que… De verdad que es que esto lo hace y por nosotros, más que nosotros. De hecho, por nosotros venimos para hacer nosotros posiblemente. Claro, seguro que ustedes saben más que nosotros, que no penséis que ahora… Uy, que tan enterrevisa y… Uy, que sabe un montón. Aquí sabemos cada uno de los nuestros. Sí, sí. Hay una preguntita por allí. ¿Cuál es la diferencia entre Warp Press Pride Run y Local Situ? Cuando se pone en un Local de Warp Press. Sí, el Local te refiere a ese Local de lo que era antes Flywheel, ¿no? Que es un software que se llama Local para tener un instalador local. Local WP. Eso es, eso es. Pues la diferencia, si no me equivoco, porque yo es que no lo he usado en Local. Sí. Local es un Dock. Claro. Local, al final, usa tecnología Docker por detrás, ¿vale? Y al final, lo que está montando es una instancia completa, te está montando. Un servidor entero del INU, ¿vale? Un… o sea, un… Mejor se… Está montando un Ubuntu… Me lo estoy imaginando, ¿vale? Está montando un Ubuntu entero por atrás. Está montando todo el… Un servidor apache entero. Mhsql. Claro, Mhsql. Ahí está todo. Y ahí ya empieza a funcionar luego por encima del Warp Press. Aquí no. Con WebAssembly, lo que permite es poder ejecutar el código directamente en navegador, que es una tecnología fantástica. O sea, eso es maravilloso. Y el equipo de Playground pues ha conseguido adaptar PHP para Playground, que yo creo que es el equipo que está manteniendo la instancia de PHP en WebAssembly, ¿vale? Y ahí no… estamos ejecutando ningún servidor. Las finales son estrategias diferentes para manejar tu instalación local, que es cómo se debería desarrollar. Sí. Otra pregunta. Y lo que sí es verdad es que el Playground puede tener algunas limitaciones por la limitación que tiene la técnica en este momento. Y lo vaya a ver ahora la limitación más grande que tiene. Y tanto local como otra vez que también funcionan con Docker y tal va a ser más realista con lo que al final es un servidor. Para día a día al final no utiliza Playground para desarrollar. Lo vais a ver claramente ahora porque una de las limitaciones grandes que tiene es que cada vez que hagamos un cambio tenemos que actualizar el Playground y volver a lanzarlo, ¿vale? Pero igualmente es que una vez que tenemos ya todo desarrollado esto para presentarlo al cliente una maravilla. ¿Por qué? Porque luego vamos a ver que le podemos mandar la URL al cliente para que lo ejecuten directamente en su ordenador. Y él pueda estar trasteando, trasteando, lo rompa y cuando lo rompa lo uno tiene que recargar la página y lo tiene otra vez bien montado. Son estrategias diferentes al final, pero sí. Simplemente era que comparándolo con local. Yo en local veo los archivos de la base de datos y aquí entiendo que están en navegador o aquí no. Bueno, aquí sí lo tienes porque lo tienen SQLite. Si conocéis SQLite, ¿conocéis todos SQLite? Bueno, una estrategia de guardar la base de datos en un archivo, ¿vale? Eso es muy útil también para todos los como, por ejemplo, la universidad que no te monará ya así, pero antiguamente la universidad no te dejaba tener base de datos. Tenías solo archivos, entonces, pues hay entornas que están más limitadas por temas de seguridad y aquí en este caso, por ejemplo, si hizo una extensión de guardar el gusto para SQLite. Sí, y Cado, ¿y cómo consigo yo descargar la base de datos? Si no me equivoco, si te instala un plugin de backup de Playground te puede descargar una versión de la base de datos, aunque no sé si funcionará bien, la verdad, porque no lo he probado. Tenés cierta limitación en el plugin. En el local tienes, sabes que tienes un pequeño editor de un segundo PHP Miami en el clímetro. Efectivamente, eso aquí no lo tienes, eso aquí no lo tienes, eso es verdad, sería una de las limitaciones. Y otra, alguna duda que tenía, es que, igual diréis ahora, que hay que hacer esos archivos que son el bajado, si es un cambio, eso es como se refresca, como los restaúros en el Playground. Como lo que hemos puesto, es que se synchronice con un director de la redredador. Sí, eso iba a decir que aquí tienes la base de datos en ht.sqlite y eso lo abre, yo tengo Tablet Plus, o pasa de Paco, ¿no tienes Tablet Plus, por favor? Sí, yo también lo uso para él. Al final, un cliente de base de datos carga ese archivo. Y ese archivo también te lo puede llevar cualquier sitio. ¿Cuál es el tablet? No, pero es una aplicación de… No, no, no, recupera. Con cualquier cliente de base de datos puede abrirlo. Al final, es muy sencillo porque esto hace un zip y te lo lleva cualquier sitio. No tienes que estar esperando levantar el servidor y todo esto. Pero para un taller, por ejemplo, viene muy bien. No, porque te lo he montado de un momento. Y lo que vamos comentando es que, claro, ya aquí tenéis todos estos archivos que son los archivos de un Warp Desk y alguna vez lo habéis visto, lo vais a reconocer, su WP Admin, WP Includes. Recordad que en eso el director no se toca o corta las manos. Y lo está el WP Content, que ahí es donde hay que tocar. Y ahí es donde se hacen los cambios, hay los contenidos, los temas, los archivos que se suben y los ponen en los que se ponen los plugins. ¿Fran, la funcionaria se puede poner en los temas? Es que eso está feo. Sí, seguro. Porque una diferencia entre temas y plugins o al final alguna diferencia conceptual o para intentar que esté todo ordenado y cada cosa en su sitio, es que los temas sean. Están dedicados a cómo se ve el sitio web, el aspecto. El diseño y además esto va mucho más en ese camino con los temas que están dedicados, los temas de bloques, los temas de Gutenberg, por ejemplo, que es que ya estilo y diseño y ya está y no va a poder hacer nada más y que los plugins sean los que tengan la funcionalidad. Que esto realmente tiene cierto sentido porque muchas veces el diseño no necesita un mantenimiento o no tiene actualizaciones, claro tiene actualización cuando cambia el diseño entero, pero una funcionalidad sí que muchas veces… Es más fácil que la actualizar. Que más fácil es que cambie algo y que tengas que tal. Entonces, los plugins para la funcionalidad y los plugins se actualizan por su parte y añaden cada plugin una o dos cosas y los temas específicos para el tema diseño. Esto lo comentamos porque es que muchas veces hay temas que incluyen… POST-I. Muchas funcionalidades que a lo mejor no usas. El típico por ejemplo por folio. El tema con por folio. Cuántas veces no me he encontrado un tema de tinfoires o de cualquier otro de embatos o de cualquier sitio que pones por folio. Que siempre lo tenés fácil. Claro. ¿Cuál es el problema de esto? ¿Alguien sabe cuál sería el problema de tener un tema con un custo POST-I que… Mamá sí, desde el perfil. ¿Cómo? Mucho peso. No. No. Ay, ese sí es. Si cambiamos el diseño o el tema activado, el POST-I lo perdemos. Porque normalmente si se ha registrado con el tema tendrá su propio slug que aún es slug que se le pones y cuando cambia otro… Claro, si quieres respetarte tenés que registrar POST-I por un plan y utilizar el mismo lúpano para perderlo. Claro, pero fíjate, esa tontería, que es una tontería en verdad, porque al final el contenido lo vamos a tener en la base de datos, ¿vale? Pero ya no va a ser asesible para nosotros. Entonces, cuántos clientes nos llaman asustados porque han cambiado el tema y he perdido toda la información. Yo estaba poniendo todas las cosas en el portfolio, dios mis clientes, mis cosas y lo perdí todo porque he cambiado el diseño nuevo. Esa llamada la hemos recibido seguro. Hay una resilla por aquí al principio. Claro, claro. Y entonces, ahora lo que teníamos que hacer, tenemos que hacer un plugin que tenga el mismo etiquetado y el mismo lúd del POST-I y del tema y todo para recuperar eso. Directamente vamos a hacer todas las funcionalidades que no sea visual, porque el tema también… Hay temas que también necesitan un poquito que no estamos diciendo que todas las funcionalidades ya tengan que ir en los plugins. Todas las funcionalidades principales que esa añada, WordPress, necesarias de front visuales, eso nos lleva el tema. Con ejemplo, los patrones, eso sí se está incluyendo directamente en los CIN. Pero también depende… También en los plugins. Sí, y también… Puedes encontrar plugins con patrones. Claro, claro, pero eso sí es algo… Es una función que es un poco sutil, pero sí en este caso, diseño, patroneta, pero sí las funcionalidades en buena práctica y de hecho se pide que se vaya a plugins. Así que todo, por favor, vamos a hacerlo en plugins. ¿Me ha venido a ver? ¿Me ha venido a ver? Ahora me he venido a hacer plugins, ¿no? Sí, de hecho, una cosa que también hace mucha gente es el concepto de hacerte tus plugins de funciones. Que es cuando estás haciendo un tema, estás desarrollando un sitio para alguien y quieres añadir algo que es más funcionalidad, no es tanto tema. Por ejemplo, lo que hemos comentado, añadir un custom post type, es que te hagas tu propio plugin, aunque no lo publique, no tienes por qué publicarlo, pero en ese plugin introduces esas funcionalidades para que luego, en el futuro, pues pueda seguir funcionando. Un recurso muy, muy, muy súper útil, ¿vale? Para ver las últimas tendencias de desarrollo en WordPress y cómo se desarrollan los temas, es ver directamente por los temas que están ahora desarrollados por la comunidad, como el 2024, no? El FI, en este caso. Y ahí vamos a ver cómo se desarrollan ahora los temas este año, por eso es la última tendencia, cómo se está haciendo. Todo esto lo podemos ver directamente aquí porque esto está desarrollado por un equipo de comunidad, que son tú, nos veas o máquinas, y así vamos a poder desarrollar los temas ahora, ¿vale? Y lo mismo pasa con los plugins, es una tontería, ¿vale? Pero el HelloDolly es un ejemplo básico de cómo se crea un plugin, ¿vale? Nos vamos a recomendar, nunca sé, por ejemplo, un plugin directamente con un archivo PHP directamente aquí, vamos a hacer una carpeta, ¿vale? ¿Por qué? Porque vamos a tener que tener más archivos, entonces imaginarse si empezamos a tirar archivos aquí, puede ser una locura. La carpeta se suele nombrar de alguna forma, y nos encontramos carpetas con espacios, con mayúsculas, tiene que ser siempre minúsculas, con guiones, y respetar… esa carpeta, o ese nombre se le llama, el plan es LOO, ese nombre de carpeta hay que respetarlo para todo, digo como buena práctica, no pasa nada que le llame de una forma y después la utiliza de otra, pero como buena práctica, utilizar ese LOO, y no cambiarlo en la vida. O sea, esa decisión, bueno, una de las más importantes a la hora de crear un plugin es ¿Qué nombre le pongo? Si lo vas a distribuir y tal, porque lo que sucede es que cuando… las carpetas que hay aquí dentro de plugins, por ejemplo, crees que hago un apaco, ¿pongo un plugin de SEO o algo así? – SEO plugin. – SEO Madrid, para que no haya… – Sí, efectivamente. Esta carpeta, si que no es una carpeta, la misma, pero bueno… – Ah, me quedaba. Si el director de WordPress hubiera un plugin con ese nombre WordPress.org/plugins/barraseo.md, WordPress detecta que ese plugin existe en el director y va a intentar actualizarlo desde ahí. Entonces, cuando crees que es tu propio plugin, es un nombre que sea propio, que sea vuestro, no le pongáis mi plugin. – Que eso también se va a ver. – Sí. Y ahora importante, porque seguro que… a ver, habrá también mucho desarrollador PHP como llamamos al archivo principal. ¿Sabéis qué me lo dice? ¿Cómo llamará y llamo al archivo principal? – ¿In… eh? – ¿In the… Ahí está el buen… ind.php, ¿vale? Esto se puede hacer en WordPress, porque WordPress no busca por el index. WordPress, cuando creemos un plugin, va a buscar por dónde está la cabecera, ¿vale? Que es que podemos hacer el archivo principal dentro de una carpeta de otra carpeta, que WordPress va a empezar a buscar donde está el archivo con la cabecera. Esto tiene un problema, ¿vale? ¿Y cuál es el problema? Que esto tiene un montón de incompatibilidad, ¿desde luego? ¿Vale? Que esto va a funcionarte toda la vida y esto no va a dar ni un problema, pero luego, como lo suba al repositorio y demás, y luego, para tener traducciones y demás, va a tener un montón de problemas, pero que vaya a flipar desde el problema que os va a dar a la hora de traducir, ¿vale? Y ciertas cositas, ¿vale? Entonces, como buena práctica se utiliza el nombre del luz y el nombre del archivo, el mismo luz. Entonces, como han dicho por ahí, tendría que ser también José Madrid. Punto, l’HT. ¿Y con esto ya estamos empezando a crear un plugin? Así sin convenir. O creéis que esto es una tontería, pero que hay plugins que no voy a decir el nombre, os lo buscáis porque está todo en el repositorio, lo podéis descargar de un patroda aquí, ¿vale? Con cientos de miles de instalaciones que tienen este problema. ¿Por qué? Porque en su día, cuando lo subieron, son desarrolladores PHP y que le pongo a mi asigo principal, o “indexhp”, ¿vale? Y ahora, pues, han tenido muchos problemas con esto. ¿Cuál es la única solución que tiene esto? ¿Vale? Este es el problema. Cambiar el nombre del archivo. Pero ¿qué pasa si le cambiamos el nombre del archivo al archivo principal? ¿Qué pasa? Uno por uno, por favor. Por ahí. ¿Qué pasaría? Mira aquí. Bueno, eso puede ser un error. Sí. Esta es ella. ¿Qué pasa? Hay todas las instalaciones que tenga ese plugin, se van a desactivar. Imaginarse un plugin funcionando. Imaginarse, por ejemplo, que no es, ¿vale? Pero imaginarse elementos. O un Google Comer. Con 18 millones de instalaciones que la tengan que desactivar las 18 millones. Son unas que han elegido el nombre del archivo. O sea, el nombre del archivo y la carpeta ya son inmotables. Por eso siempre se dice que se piensen un poco a largo plazo. Si hacemos un plugin, no sé, que busque arreglar un problema ahora, busca un nombre más genético. Más general por si en un futuro consigue actualizaciones, ¿qué es lo que ha pasado? No le ponga ahí Twitter, por ejemplo. Por un plugin. Porque luego cambia el nombre y luego ya. O por ejemplo, hay uno muy conocido que es un plugin de SEO, se llama SEO Framework. No sé si lo conocéis. Pero es autodescripción. Sí, sí. Pero ya no puede cambiarlo. Ya está. En su momento tenía que haberlo llamado plugin SEO. Bueno, SEO Framework, por ejemplo. Y ahora ya no. Ahora ya es Lula Beck y tiene ese. Cuando has dicho que el nombre del plugin tiene ser único, ¿dónde puedes buscar? Si ese nombre existe. A ver, lo puedes buscar directamente en el repositorio. Si existe algo parecido. No se ve de preferencia. Pero igualmente hay herramientas, ¿vale? Que puedes buscar por este tipo de cosas, ¿vale? Yo veo fácil el buscar el nombre que vayas a poner en el repositorio y mirar si lo encuentras. Si el buscador por lo que sea, funciona un poco regular, mejor que busques en Google o un buscador… Se lo puede preguntar, ¿sabes qué pretendo? Si no lo hagas, sí o sea. Claro lo que… Otra cosa también, si es un plugin personal para un cliente, pues si tienes el nombre de tu empresa o Freelang, pues pones tu nombre adelante y después lo que hace el cliente. Entonces ya sabes que eso no va a ser difícil, ¿no? Que encuentre otro plugin con el mismo. Traía otra. El micro, el micro. Bueno, para revisar eso si existe el plugin cuando baja el directorio de los plugins y estás en la URL de cualquier plugin la última parte es “look” ahí puedes ver… ahí sabes si está repetido o no. Y otra cosa que no sé si lo mencionaron cuando cambias el “look” de un plugin es verdad que se desistalan y aparte de eso los plugins que interaccionen con ese otro plugin y que revisen si está activado también tienen que cambiar todo el código porque utilizan el nombre de la carpeta y el nombre de la oficial que activa. Y una puntualización a eso que prácticamente es todo lo que tú has dicho, ¿vale? No, el 100% de las veces o sea, el 99 si va a ser no el 100% de las veces el “look” del repositor tiene por qué ser el nombre de la carpeta y demás porque los autores pueden solicitar un “look” distinto también. Ah, gracias, no sabías. ¿Vale? Los que están en colas de revisión tienen ya uno reservado. Puede que esté en colas de revisión que la colas de revisión hay 2.000 plugins en todo el clado pero de todo modo sería improbable si tiene un nombre distinto en vivo. Igualmente, y lo último ya sobre el tema de las URL si subís un plugin una vez que tenéis vuestra URL a toda la vida. Si, vienen preguntas diciendo ¿Puedo cambiar mi slug? Por ejemplo, este deseo frango, voy a pedirlo. No se puede. ¿Por eso? ¿Por qué se debe de se instalar plugins? ¿Pero es un feo final? Claro, como crean más problemas los usuarios o evidentemente eso no se permite. Entonces ya tenemos dentro de la carpeta “plugging” tenemos una carpeta que se va a ver el chico con ese nombre y ahora que hacemos. Hay 2 preguntas. No sé si saben los “most just plugins” vuelves también tiene una carpeta Sí, más para plugins. Si bajas la funcionalidad que a lo mejor sea pública en vez que sea un plugin puede ser un “most just plugin” o no sea publica. ¿Eso es otra carpeta? Es una carpeta especial para los sitios multi sitios y efectivamente lo que hace es que esos plugins que tú pongas, puedes poner un “function” o puedes poner “plugging” directamente que se activan siempre o sea no puedes desactivar o sea en una pestaña parte de plugins siempre activado. Sí, yo tenía un pequeño apunte que a lo mejor lo vais a comentar y es que a pesar de que no se ponga el index PHP por los problemas que habéis comentado que es muy interesante que lo habéis comentado aún así es interesante crearlo y en todas las carpetas por algo que seguro que vais a explicar ahora mismo. Sí, bueno una de las cosas que hacemos durante las revisiones es pedir que los archivos PHP ponerles el “appspot” este al principio básicamente se les pone que verifiquen si existe un parámetro de WordPress para que no se puedan ejecutar directamente los archivos PHP Pero me refiero a que para que no haya un listado de directorios si en Apache está mal configurado eso ocurre en muchísimas instalaciones es mejor en cada carpeta tener un index PHP con el típico “silence is holding” por ejemplo Claro, los hosting normalmente por defecto evitan que esas carpetas ya es que lo que pasa que hay acepciones pero normalmente evitan que esas carpetas se puedan listar y por tanto vean los archivos pero no siempre o el “dorks” ve su montón pero sí, efectivamente un archivo como tú has comentado un index.php vacío sin nada y ya está, así se evita el listado de archivos Igualmente, lo del index que estamos comentando es para el archivo principal del plugin el que va a llevar el comentario evitarlo 100% de la presa que sea un archivo genérico como el index ¿Cómo hacemos un plugin? que es lo primero que tiene que llevar un plugin alguien lo sabe que es lo que tendríamos que hacer si quieres un plugin una cabecera una cabecera que es un conjunto de comentarios con distintas directrices El plugin tiene que identificarse a sí mismo como plugin ¿De dónde lo vamos a copiar? por ir a ver el “Hero Dolly” mismo lo podemos copiar que antes de ya empezar con los errores comunes alguien detecta aquí un error solo aquí ya hay un pequeño error y lo vamos a comentar (murmullos) (murmullos) ya lo han dicho ya lo han dicho no se comprueba la ejecución directa del PHP eso es para que no haya ataques directos a archivos PHP muchas veces hay por ejemplo hay PHP que reciben la petición de un Aya o de otra petición entonces si no le ponemos a parte de un NOM puede ejecutar el PHP y hacerle petición directamente esta después sería una forma de hackear la otra la forma de que los archivos PHP de un plugin solo los ejecute mortes y no los ejecute hay un caso un concreto con PHP donde podemos hasta no ponerlo hay un caso concreto en PHP donde podemos porque ya sería imposible esa ejecución de fuera alguien sabría cuál es el caso concreto que estoy comentando donde no hace falta poner un APA es súper fácil o no (murmullos) justo justo cuando hay solo una declaración de clase sabes que no va a haber nada ejecutable es una declaración claro el APA sobre todo es para cuando tenemos el código aquí y una función aquí por ejemplo se puede ejecutar lo que pasa es que está realmente posiblemente no se ejecute porque seguramente abajo del todo hablará de alguna función de golpe el atasión y en cuanto se ejecute estrenamente llegará aquí y esta función no existe y fallará le ha dado un fatal error que PHP pero se pide que se ponga en todos los archivos por si acaso como una buena política y si no lo hagas en la historia nosotros lo comprobamos y te pedimos que lo ponga ya preventivamente o incluso en los PHP de clases porque dice bueno llevo una clase pero a lo mejor se te ocurre cambiar ese archivo y meter funciones meter un tipo de de funciones o lo que sea y entonces pues lo pedimos también como manera preventiva y es preventivo porque además una de las cosas que hay que tener en cuenta es que vale puede que tu plugin ahora mismo por lo que sea como este hecho y no te ha afectado por eso no te puedo demostrar que se puede hacer algo malo pero en el futuro cuando edites el plugin cuando hagas cambios a lo mejor si que te dejas algo entonces todas las buenas prácticas que puedas aplicar para evitar todo ese tipo de cosas pues está bien por ejemplo también pedimos escapar todas las salidas cuando a veces no hace falta porque hay una salida que viene de una variable que es una variable fija por ahí no van a meter nada por ejemplo que es tuya pero en así se solicita porque mañana cambias esa constante por una variable que viene de otro sitio y tal y no te acuerdas de ponerle el escape se escapa todo lo que sale se sanitiza todo lo que entra por ahí pregunta por ahí por ahí ahí va la pregunta por ahí pregunta cuando van a revisar el plugin estamos en un template y llamamos la función home your para pintar el sitio eso también es estrictamente necesaria escaparlo aunque sea una función de botles porque tiene filtras imagina yo cuando reviso cuando reviso y lo veo digo bueno me estoy pidiendo que escape esto pero en fin pero si se solicita aunque sea así hay casos que no son pero para no perder es como lo de las paths igual es que al final no te equivocas están escaparas todas las salidas no tienes que andar mirando excepciones claro también piensas que tú te fías de lo que tú tienes en tu base de datos tú piensas lo siempre así por qué te tienes que fías de lo que tú tienes en tu base de datos pero bueno dice una función pero claro para final para todas las salidas tú piensas lo así para que te fiarías de lo que tú tienes en tu base de datos porque te podrías cambiar el valor con la base de datos y lo estas ejecutando otro plugin te mete un filtro en la función que genera la url y es que también eso pasa entonces Paco esta haciendo esta cosita que hace que el plugin se pueda identificar claro claro lo único que hay yo es venirme a otro plugin y copiar la cabecera para yo escribir a mí igualmente si ponéis cualquier cosa en WordPress y le ponéis handbook detrás o va a poner o va a salir aquí la documentación oficial de todas las cabeceras que hay como son las cabeceras de WordPress y aquí hay ejemplos de cabecera que podríamos pegar copiar de gelo dolly y vamos a poner por SEO Madrid que va a ser el plugin así el plugin WordPress lo ponen normalmente si tienes una web en la que hablan de tu plugin cuando mas te ponías eso eso te sugiere Paco no es que te quede clash o no eso te esta sufriendo tu propio código hasta que la gente artificial polo polo hostia ahora vamos a ponerlo mas mule en vez bueno como ya esta la en la media en que lío te esta metiendo la eclipsencia hostia increíble hay en la documentación aparte de su cara decía de la IA en la documentación tenéis cabecera y hay una que hace poco que ha dicho que esta muy bien que requires plugin que te ahorra mucho código PHP en que tu le pones el slug del director de WordPress y entonces señalo si queres ¿requires plugin? requires ¿que hace que ahora si? el singular y el plural yo siempre tengo dudas y lo bueno es que si detecta que no esta un comment te sale una interfaz para que tu puedas activar entonces es muy útil y no te deja activarlo hasta que no crea la dependencia hasta ahorra muchísimo código PHP ver si se ha activado o si no se ha activado o sea fijar en una linea lo rapido que tenemos la dependencia de hecho vamos a dejarlo puesto y así lo veis venga y listo ya esta esto ya es un plugin vamos a ver como se ve ya lo hemos probado ya lo hemos probado vamos a ver la descripción que hemos creado tan bonitas vale ahora me iría este es el que yo tengo en el local requires plugins o sea los dos en plural hostia no hay nada esto es lo que hablábamos que siempre esta el porque no vamos a utilizarlos en nuestro momento de desarrollo total para usarlo diariamente siempre vamos a tener que estar sincronizando sincronizando lo que ahora va a pulsar a ver que sincronizar el shibos locales y ya lo tendríamos es rapido pero hostia esta pulsando todo el rato cada vez que hagamos un cambio es como un muchedioso como veis pues ha salido la interfaz requires plugins eso es la quides con ese con ese pero con ese esta con de si no lo coge bien, no esta bien puesto si si lo coge con ese requires plugins y a más a ver si a que no lo dejas activarlo vale un toro claro aquí te dice normalmente te sale un enlace no se si como joaquinplegrablo esta cambiando para que te pueda instalar el plugin depende si porque a lo mejor no tiene acceso a descargarlo porque no se ahora mismo la confirmación igual no tiene la red puede ser claro si no marca lo paco no mira eso es eso si si si ahora si te dejas esto es así la eso esto es lo único a que hagamos que hagamos coger cambio hay que estar ator rato recargando pero bueno no pero igualmente te sale te sale aquí ya enlace ahí ya lo podemos instalar instalado, esta muy comod pero recordar que tienes el slope como en el caso este que decimos de el feseo framework tendréis que visitar la web y la parte de arriba del laurre le tenéis que cogerse y entonces ya tenemos un plugin vamos a ver si lo podemos activar o instalabos como eso quitarles requires mas fácil claro y así ve veas un cambio lo guardo me vengo y sincronizo y todo rato cada vez que hagamos un cambio tiene que ser este proceso y ya podremos activarlo y lo damos y ya tenemos un plugin activado que que hace? nada en absoluto es una mierda es una mierda claro lo dice hasta la ida pero esto ya es un plugin y ya es un entorno ya podes estar ejecutando con este y ahora la cuestión es claro que hacemos que haga el plugin se llama “didicxlydic” pero bueno tu ya esta un poco si inventa cosas dice que haga la canción completa y la canto (risas) cado ahora es el momento de poner aquí “cococopash” y lo que hay que tener en cuenta es como nos comunicamos con WordPress que normalmente el lugar de poner aquí como si esto pueda cualquier cosa un PHP echo bar dump directamente de lo que nosotros queremos mostrar porque queremos que o que se mueste en algún sitio o que modifique algún comportamiento de WordPress o que incluya algo en otro plugin de WordPress como puede ser bucomes esta todo el sistema de hooks que eso ya se ve en el “Helludoli” que tiene una atacción que los hooks son, hay de dos tipos están los “action” y están los “filter” que diferencia entre ambos si alguien lo quiere comentar antes de una buena práctica porque no estamos modificando código estamos añadiendo o quitando esta es una buena práctica porque una cosa que pasa sobre el pre es que si actualizamos plugin si notizamos esta tegea de código se rompan cosas entonces es mucho más fácil que no se rompan que diferencia hay en los hooks entre actions o filters ¿alguien algún valiente? o no valiente de como dig por allí para ahí se animan si si si, me imagino que estarás haciendo estarás haciendo un envío de información y cuando estás haciendo un filtro estarás pidiendo información bueno hay algo si eres un “action” es, yo quiero es decir, en una “action” puedes hacer un filtro o así si puedes hacer una acción de petición de información o de filtrado un filtrado sería simplemente de esta información si, por ahí va a ser filtrado eso seguro por ahí una mano vamos por ahí un “action” lo que hace es crear una función nueva tuya y un “filter” lo que hace es modificar una que ya hay o una variable si, básicamente si, realmente la verdad es que se puede explicar de distintas formas porque al final también es como lo tomes y el concepto y tal yo la forma en la que un poco lo distingo y lo explico es que dentro del código de WordPress hay un montón de sitios donde hay cosas en las que puedes hacer cosas que son esto que llamamos “hooks” el “action” es que tú, en ese momento de ejecución le estás diciendo que código tiene que ejecutar le estás diciendo un código tuyo, de tu plugin o bueno, puede ser tu plugin también no tiene que ser tuyo pero básicamente le estás diciendo que en ese momento cuando llega WordPress a ese punto de la ejecución que ejecute esto que normalmente hay una función que tú la edad puede ser un método de una clase puede ser una función directamente y tal cuando es un “filter” y por ahí es verdad que había estaba acertado con lo que has comentado un “filter” es prácticamente similar pero la diferencia es que si que terminas ejecutando código en ese momento pero el objetivo de esa edición es modificar algo WordPress en ese momento de la ejecución a ti te manda un parámetro con el que está te trabajando te manda los datos, esa información que hay ahí tú en tu función lo procesas, haces lo que quieras y se lo devuelves a WordPress y WordPress sigue su ejecución con la información que le has dado de vuelta ¿A qué te refiere? Me refiero igual a un “action” sería una “action” que te diguió que me refiero a lo mejor un “action” sería como por ejemplo una base atos cuando haces una petición haces un “select” dame esta información y luego puedes filtrar esa petición decirme “segucioname” esta información pero por ejemplo solo los hombres donde el género igual hombres donde el sexo igual hombre No realmente pero sí que puedes modificar la base de datos con los filtres y te va a ver si va por ahí estamos enseñando en pantalla hay un “plane” que se llama “hooks filter” y los “hooks” como dice Frank son huecos donde tú puedes ejecutar código y en el “action” se compone por varios parámetros uno es el hueco que es el “hook” que aquí lo estamos viendo el primero es muy bien “admignnotice” pues hay un hueco que da “workpress” búcalo en el code yo decía por asimilarlo a algo por coger una mensaje a “fora” y se me ha parecido por ejemplo perdón así de este grupo pero en una base de datos es eso cuando quieres la información o la pides o la pides filtrada no pides información sino que es más bien que tú en ese punto ejecutar algo piensa que “workpress” está lleno de huecos huecos que te va dando de hecho los “plane” que están bien hechos dejan también esos huecos “wookcomers” los más populares los sabréis y entonces no sólo te permite aquí ves todos los huecos y veis en orden que se ejecutan los huecos y los huecos pueden tener funciones y ya ejecutándose que tú puedas quitar, eliminar y se sería “remove action” dentro de los huecos hay funciones y esas funciones tú puedes elegir quitarla o añadirla y también puedes decir “no, no, quiero añadirla” pero antes que es el tercer parámetro que sería la prioridad entonces tú según estás en muy buena práctica a la hora de programar porque tú vas haciendo por ejemplo una cosa que se hace mucho en “wookcomers” que es el archivo de plantilla de checao o de pagina de producto te lo copia en tu tema y lo modifica pues cuando se actualice el “warp” en la mojosa plantilla se ha quedado osoleta entonces una buena práctica es “no, no, mejor, voy a poner en mi “pluggy” “adactium” o “remove action” y las funciones que yo vea que sean necesarias porque los huecos sí verán que son bastante inmutables se mantienen durante mucho tiempo porque por retrocompatibilidad van a estar en “wookcomers” toda la vida y aquí podéis ver todos los huecos que se ejecutan y bueno pues hay estos son los “fit” “admin” no son huecos aquí por ejemplo el “admin” no te lo tenemos aquí y ese se ejecuta en el “body” digamos del “admin” entre medias de antes del título de una de una página y claro eso está por todos lados cuando se ejecuta “warps” con esto podéis decir en el momento que “warps” carga la url haz esto un poquito o cambiame si es un “fit” cambia la url por esto o por ejemplo un caso como muy claro que creo que podemos mostrarlo es cambiar el título de la página o algo así cambiar algo de la página pero yo creo que se puede ver muy claro con eso en este caso el título bueno es que no se si va a cambiar porque aquí pone “warps playground” como título de la página no se si al estar dentro de “playground” bueno aquí una cosilla claro las acciones se están ejecutando en PHPHP el tema está hecho en HTML, CSS un tema de bloque entonces como veis no tiene tanto huecos de hooks no se ejecutan en PHPHP si cogera un tema clásico es un tema clásico que si está hecho es muy importante tenerlo en base para que no lo sepa a raíz de el fullside editing que se añade a WordPress se crea un nuevo concepto de tema que son los temas de bloque donde ya no tenemos PHP ya solo tenemos HTML y unos xml que nos permite meter todas estas configuraciones para que todo el sitio funcione exclusivamente con bloque dando una posibilidad infinita eso da para un taller 2 o 3 porque WordPress cambia fullside editing un tele uno para generate espere vamos a ver cualquiera que no a un 20 antiguos perdón ya lo tocado demasiado no tocas el ordenador no se toca el ordenador hay una manera de un tema uno que no sea de 20 antiguos por ejemplo tienes que ser seguro entonces los hooks que estábamos hablando los tenemos en el admin lo tenemos cuando se ejecuta incluso nosotros en nuestro propio para bien podamos poner esos huecos pero bueno eso ya sería otra historia pero vamos que esos huecos son muy importantes y el plugin este o señal o señal como están esos huecos una buena práctica es llenar la cantidad de huecos entre los que crea el WordPress crea el tema y crea los plugins que tengas tu instalado esto para desarrollar está súper bien y también fijarse la diferencia que tenemos entre un plugin un tema un tema clásico un tema fulsa editing ya solo por la cantidad de huecos que tenemos en uno y en otro es que realmente un plugin por ejemplo el típico plugin que añade las redes sociales al final desde el post es que realmente usa un action y que está por ahí aquí por ejemplo veis lo que decíamos que se llama generate before content que tiene una o sea aquí te lo está mostrando en la área gráfica veis la acción que es el hueco y nosotros podremos elegir que incluso esa función la podriamos desactivar un remoactio el hueco y la función podriamos eliminarlo y que tenemos el título de las páginas y si le metemos un condicional de que no sea en home o que sea en home por ejemplo podriamos eliminar el título de las páginas de inicio pero eso con una línea de ADACTI o remoactio si que te voy a hacer un ejemplo con get the title que se puede filtrar para ponerle hello world 2025 actualizado que son muy típicos del SEO o sea que queremos vamos a filtrar de title un filto de title y así se ve claramente para que veáis a la hora de la documentación de warpre que es muy importante revisar porque vamos a poder ver cómo se ejecuta por dentro estas funciones porque vamos a decir por ejemplo por qué tengo que escapar a esta función de warpre del core porque tengo que estar sanitizando esto porque a lo mejor por algún proceso interno no lo hace entonces como sé que sí tengo que hacer lono yendo directamente a la documentación a verlo porque ahí vamos a poder ver la ejecución interna del play de ADACTI o de la función en concreto cual queríamos tocar de title por ejemplo de title esto es el base de nuestro mejor amigo todo el día es que vamos a poder ver directamente cómo funciona por dentro y las funciones que utilizan es muy necesario para saber ese proceso de ejecución y sobre todo si necesitamos o no escapar este contenido o sanitizarlo en caso de que fuera rebe fuera una entrada y al final está el filto al final de ese bloque porque esto forma parte del núcleo de warpes más abajo ahí y fijaos que warpes dice porque esto es una función que te da el título de un artículo que es ese “hello war” que hemos visto ahí y warpes te dice al final te devuelvo el título pero antes de devolvértelo voy a aplicarlo en filtro de title y le mando el título en el segundo pedámetro en este caso y en el tercero el identificador del artículo y esto es para que cualquier plugin cualquier cosa pueda tomar eso y decir vale pues te lo voy a cambiar y voy a hacer otra cosa distinta con esto lo bueno que trae también la documentación que abajo siempre no tiene un montón de ejemplos vale eso por la comunidad como puede utilizarlo vale aquí hay comentarios hace 9 años también hay funciones que son perennes y que no van cambiando vale entonces aquí hay muchos ejemplos que va haciendo la peña y que no son súper útiles para poder programar todo tipo de modificaciones esto es el recurso que vamos a estar utilizando en nuestro día a día vale esto va a ser fiarse que hay documentación por todos lados vale hay que hacer los ejemplos de eso y lo vemos en vivo bueno al filtro si quiere y a la copia de aquí directamente una buena práctica que ahora también vamos a conocer y que nosotros de hecho cuando revisamos plugins lo decimos es no sé si os veáis de la cuenta cuando hacemos colamos css o js que hay que ponerle la versión de tu plugin continuamente vale y en otras cosas también a lo mejor hace falta utilizar la versión del plugin pues aparte de ponerlo en como cabecera de PHP lo bueno es que en tu inicio de plugin tenga un conjunto de constantes prefijadas con un prefijo de lo que va a necesitar al lado del plugin la versión se utiliza también por ejemplo el directorio principal de tu plugin y así bueno con los clases si no pero tiene ya hecho pero también vamos antes si lo engancha eso lo que comentaba aquí un poco aquí por ejemplo lo que decíamos tenemos aquí una cabecera este es un plugin que está publicado en el directorio y aquí tenemos el aspad y definimos una serie de constantes que luego lo vamos a utilizar para muchas cosas las más típicas son la versión yo esto lo recomiendo bastante de forma importante porque ya digo cuando me voy a hacer un encolamiento de CSS siempre voy a utilizar esa constante entonces cuando yo cambio versión o actualice versión del plugin lo cambio en mi cabecera y lo cambio en mi constante y llaman seguro que todos los CSS que están encolados y que van a pasar se reinician no se si sabéis que cuando la versión dentro de los CSS se mete como un parámetro al cambiar la versión de encolamiento también te hace que te reinician porque si el que cambia cosas de CSS no se muestren bien al usuario a la actualizar entonces esto es muy buena práctica luego el propio file porque muchas veces hacemos referencia al plugin o sea perdón al archivo del plugin principal pues lo meto también en una constante la url también porque esto se utiliza para encolamiento de CSS y jms nos pide la url donde va a estar nuestro CSS pues lo cojo aquí en el principal y luego solo al añado las sus carpetas y sus archivos que tenga esa estructura de play y para terminar cuando hacemos un require o incluye de un archivo si no lo hemos hecho con composers también esto nos ahorramos esta función que se está ejecutando sino que en el propio constante ya la estoy metiendo esta parte es otra cosa que tiene pero estas son las principales que siempre recomendamos para nuestro plugin y aquí veis lo que hablamos de política de seguridad para que no se cargue el PHP que se puede… Faran tiene un archivo de las distintas formas que se inscriben y ahí es infinidad de veces esta es una al final es que si no tiene este constante que la define el propio WordPress pues que muera ese PHP que no se pueda terminar ejecutando y… esta con el fito este que al final crear un plugin es que sobre todo es eso es comunicarse mucho con esos hooks y ver que hooks ejecutan cada momento para que tú puedes introducir ahí tu código o podrán modificar la salida que existe ahí, la salida, el dato o lo que sea en este caso veis que es una función adfirter añadir un filtro y la dicha añadir el filtro de title ha metido ahí directamente la función esto se puede hacer así o se puede referenciar a una función a una clase, a un momento de una clase fíjate y en un momento te lo hace que Manny hablaba a la IA con las leadings no, no, no, no ¡Ey, cante, entro! están pidiendo que cante y lo que está haciendo esa función que toma el título porque el título le ha venido desde el otro lado lo va a poner en función separada, casi igual se ve sí, más claro vale, al final lo único que estamos haciendo es concatenar sí, sí póntelo en el aflíter el nombre de la función el nombre de la función ahí en el segundo que es que esto no te va a ejecutar ¿qué es que es? el segundo parámetro, el nombre de la función así como string aconde que bueno eso el segundo parámetro es la referencia ¿qué es la función en este caso? simplemente le decía el nombre de la función y luego hay otro parámetro que veis que hay un 10 que eso es la prioridad con la que se ejecuta esto es porque pueden haber más plugins que ejecuten esto así como una vez que deis ponerlo vosotros primero después etc. y dos es el número de parámetros que va a recibir la función solamente sólo vamos a usar el primero pues hemos puesto dos pero la función sólo tiene uno y da igual así como que funciona de todo modo y lo que le estamos diciendo es, vale cuando se ejecuta la función de title que es la función esta por defecto que tiene warp y tal en el code que tome ese título y le añadimos ese ssr. como veis en el fitro recibimos la variable original que queramos con ella esa variable puede ser de muchos tipos no tiene porque sea de texto en este caso es una de texto luego sea write de todo cualquier tipo hay alguna cosa que vosotros digáis cómo se hace esto en un plugin cómo funciona día y le damos así como una pensada agrupal a ver cómo se ha día para así resolver un problema real algo que se pueda ocurrir si no lo preguntamos si no lo preguntamos a chagpp que cosa por ahí a ver por ejemplo como has mencionado a rice, se me puede ocurrir que cuando metas en un carrito por ejemplo cinco productos te aplique cierto porcentaje del cuento por así estaría viendo a rice y una regla en una página externa por ejemplo de las primeras de las que vas añadiendo vale, y está la buscó en spaco vamos a ver cómo se hace normalmente para esto porque esto que ha habido de bucomers tienes que mirar en la documentación de bucomers a ver cómo se hace eso claro el problema que has planteado es cuando añades como cinco productos algo así que te haga un descuento para eso lo que hay que hacer es modificar el carrito de bucomers y el carrito de bucomers es que tiene un parámetro tiene un objeto si, un objeto tiene un parámetro de descuento si no me equivoco bueno, para aplicar el cupón puedes cambiar el precio puedes utilizar diferentes estrategias cambiarle el precio o añadirle descuento o añadirle un cupón puedes hacer distintas estrategias también como te interesa comercialmente ponerlo en el plugin vamos a buscar una solución a eso y vamos a hacer más no solo nosotros, también vosotros nos miras porque esto obviamente no está preparado no estamos conchabados, ¿verdad? no no estamos conchabados entonces este es el momento de buscar en la documentación ¿Has dicho que un array seguramente sería un objeto? claro que lo decía porque como habéis dicho lo de la array igual a alguien nos ha dado programación no sabe lo que es un array le puede interesar que le expliquéis cómo funciona un array de la forma básica por si el día mañana tiene que hacer algo con un array que sepa para que le puede servir por eso he dicho también lo de 5 productos porque tiene que igual darse información a algún lado claro bueno, ahí probablemente sea un objeto vamos, ya de cabeza no no recuerdo pero vamos a hacer un objeto que tiene que hacer el cart y ahí le pueden modificar estas cosas pero está al final en un descuento por cantidad es que al final es eso que por cierto cuando te encuentras este tipo de problemas una forma de ver cómo solucionarlos es encontrar un plugin que lo haga y dice y este cómo lo hace pasarme el hdmi y a ver si sacamos de aquí algo ¿Llegas? ¿Cómo llegamos? ¡Mira que chingadito! no hemos descargado un plugin estamos viendo como lo hace si, lo he metido en google he puesto ¿Vocommerce discount by quantity no sé qué está enseñando una ajuste ¿Pero qué es esto? bueno, aquí por allí hay una pregunta cuplica parece que hay un filtro que se llama “willcommerce before calculate hotels” 10 minutos no parece no me asustes nos quedan también mal 10 minutos para las preguntas ¿no? ¡Ah claro! ¡Ah que llevamos 10 minutos! ¡Ah que ya! por allí vas a preguntar tengo el hook ¿por qué lo he usado alguna vez? ¡Estupendo! ve salen cosas es “bookommerce card calculated fees” ¿vale? “card calculate” quizá esta fíjate que casualidad ¿hay alguien que ha abierto esta? si y cada vez te dice “ah si perdona” si que tu ya la agafa pero nosotros no y la agafa la tengo un poquito cuando más comando más no, y comando más no hace nada es un visual es parte de la cosa que me enseñó y es para que si la haces así como los móviles bueno ¿hay alguien que estaba peleando con la un poco el tema de la acción y filtro es muy importante por eso porque fijaros que el hueco siempre va a estar entonces es muy buena práctica si bueno, fijaos que aquí pasa una cosa un poco rara hace un “action” hemos visto antes el filtro esto sería un “action” no sé por qué es un “action” si modifica un par… supongo que le añade en lugar de… con el cálculo a lo mejor al final para que ponenle muchas veces también la prioridad si queremos que lo haga después de todos los plugins a lo mejor tenemos una prioridad muy alta hace esto porque realmente bueno, ha traído la función “attaction” realmente la función “agación” original sería… esto no se lleva muy bien porque lo hacen si, es que… porque ha traído algo que ya… que ya está extraído entonces, es este “hook” veo que llama esta función y voy a ver esta función si la encuentro voy a ver qué hace lo que pasa es que el calva que ha dado una función que se llama “buckummer” no sé qué… aquí está un poco rara esto ya está mal a nivel de revisión de plugins porque no está poder fijar en nombre de la función así que cualquier otro plugin que use este mismo nombre pues va a haber una colisión pero no está dentro del clase, ¿no? o si… ah, si, es verdad, es verdad, está dentro del clase es que como no… si, no lo ha traído bueno, un comentario a esto que están hablando los prefijos que no lo habíamos dicho hay que prefijar siempre las funciones en las clases nosotros hace poco cambiamos la directiva de tres dígitos a cuatro que sean los… suficientemente distinguirlas de otros entonces, normalmente lo que decíamos un poco los “lou” son decisiones que tenemos que tomar que luego van a venir bien el futuro hay que utilizar cuatro dígitos y en esta clase por ejemplo, lo han puesto tres dígitos que es más más, ¿no? “what” un bajo disco también como… es una directiva que hemos puesto hace un relativante poco bueno, lleva más tiempo bueno, pues claro, los plugins que ya estaban no pueden cambiar a partir de ahora si dice cuatro dígitos pues, vamos a ver lo que hace es una función que se llama “bookomers custom search age” que es como… lo que añadirle algo adicional de dinero, de dinerito a arcarrito y veo que lo que hace es que bueno, aquí toma algo se da alguna comprobación aquí toma como un descuento lo multiplica por menos uno claro, porque le está añadiendo un “sack change” entonces claro, si multiplica un descuento por menos uno se convierte en un antidescuento (risas) a veces hay que hacer las cosas las cosas un poco chapucedas (risas) y luego lo que hace es que aquí lo… toma una variable la divide entre el total de descuento que hay en el carrito y le suma uno supongo que esto sea para hacer un porcentaje puede ser, no sé y… y luego compreva… esto se va a apagar con alguna comprobación (risas) vale, perdón, perdón perdón, es que… se hubiera un señor mayor con esto, fíjate (risas) y lo que hace es que aquí hace una comprobación aquí abajo no hace nada más, así que de aquí para abajo lo podemos ignorar de aquí tiene una… una llamada bucomerscart@fi y añade como una reducción en el carrito al precio que supongo que habría Paco, ¿tú qué tienes? el este levantado puede montar la función para ver si podemos aunque sea de forma superestática (risas) pues se llama buadvance discounts no lo pego por… (risas) (risas) (risas) mira, ¿eh? (risas) ¿cómo se llama? el… el… el… el… te lo pongo más grande con mi mano super mágica que fuerte se me escucha (risas) (risas) (risas) buadvance discounts pero si no preguntan a la IA si la IA te lo va a montar vale, vale (risas) mientras que ahí se maneja Paco me gustaría comentar buenas prácticas seguí hablando buenas prácticas ayer en el contributo estuve hablando de utilizar un control de versiones es importante hay muchos en el mercado el más conocido guija esto que hace que y sobre todo con con distintas directivas para poder hacer codigos de otros por ejemplo utilizamos Kid Ignore para las carpetas vendors que no se guarden ehh… ehh… liberías de terceros, vale pero si a la hora de distribuir plugins lo podemos hacer y… utilizar una estrategia de ramas para poder trabajar con ellas, vale hay una que es muy conocida también últimamente que te permite hacer este unitario y es… o mismo que los mirejes TBD TBTrand based development y funciona muy bien entonces control de versiones para tener otro código siempre versionado y… y utilizar estrategias de ramas funciona muy bien ¿Fruro tiene? ¿lo pasamos? si es que hay un nip directamente aquí pero si pasaselo vale pero cuartemos que tiene vamos bueno, ya se ha dado una cosa ahí a ver, la cosa también es terminar toda la instalación de boomcomber hay que crear productos, hay que crear un montón de cosas no, te viene ya uno no, no, no, no, no creo que no me queda ninguno por eso estaba viendo un poco ¿la capital está aquí por dentro? ya, está el CSV está el CSV ya, ya pero mira, tiene aquí un nip, es Paco te lo paso por… por Slack mmmm pasame la URL por… no te voy a quitar no voy a abrir el Slack aquí lo comprende ahí eh, más cosillas a veces tenía preparado toda la parte de scaping, cosas que… eso nos va a hablar si, pues vamos a comentar sobre los scaping comentamos, mientras monta eso comentamos sobre los scaping ahora lo tengo tú aquí lo aquí aguantada la alfaca claro creo que hace boletillas es que no por más que no da tiempo ha hecho todo esto vamos a ver bueno, tenés que ir y decirles si nos dan la tarde también para seguir con esto toda la tarde y mañana también vais a venir aquí vale, igualmente al final lo comentas, aquí tenemos el filtro, vale con lo que sería vale, ya la función es bastante sencilla la prioridad aquí importante yo le pondré una prioridad más alta, de 10 darnos cuenta que las prioridades van por sartas de 5 o de 10, casi todos de 10 10, 20, 30, 40 eso lo haces para que puedan, para darte espacio a ti a meter una prioridad de 9 o 5 normalmente, para que vayas antes o después y luego, pues si tenés que ir a 99, pues te va a 99 y ya sabes que normalmente es la última claro, a ver, también como terminé todo esto se llama muy largo, vale, y nos quedan 10 minutos si, si, si, bueno, nos poníamos menos hace 10 minutos quedaban 10 minutos, vale una cosa que nos tiene que quedan bastante claro, vale es esta parte de la documentación de aquí, vale, que es toda la parte de de recibir y mandar datos, vale, que eso sí que es una cosa que queremos que quede claro por el de hecho, vale, de que esto genera uno de los problemas de seguridad más comunes de internet y más explotado, vale que al final, poder recibir inyesiones, vale, en nuestra página, vale por eso, siempre tenemos que seguir una directriz, vale que escapa lo más temprano que pueda, o sea sanitiza, no, lo sanitiza sanitiza lo más temprano que pueda vale, o sea, cuando recibimos un dato por un post, por cualquier sitio, vale, por una llamada tenemos que sanitizar y con las funciones que nos da WordPress, vale, que no tenemos que reinventar lo que es el ciclo, vale ya WordPress tenemos un montón de funciones de sanitizado con los que vamos a poder desinfectar lo que ya recibamos, vale una vez de esto, vamos a validarlo, vamos a validar siempre, siempre siempre, siempre, siempre validar lo que recibeis, vale y nunca fui de lo que tengáis guardar la base vale, así que siempre escaparlo, no es que es el post, bueno y quien dice que no hayan infectado la entrada cualquier cosa, eso tenéis que tenerlo en cuenta, no solo por vuestro plugin, sino por el resto de plugin o resto de la instalación, vale porque no vayas a saber si el plugin de verdad lab esta tiene una vulnerabilidad una cosa muy típica también de sanitizado es la API, cuando te conecta una API a ver, normalmente no debes estar infectada la API, pero te pueden infectar la API, lo que te traes de la API tienes también que sanitar y al final, como que no te fías de nadie de quién te va a traer, si es de la base de actos, si es de una API extena o cualquier cosa si, como además uno pide pan, eso da igual sanitar los cinco veces, da igual no va a ser algo que añada mucho tiempo de ejecución, así que hay distintos tipos de funciones de sanitizado según la variabilidad que te traigan por ejemplo email si es un texto si es un título, etcétera sanitiza el título, me parece que lo que hace es que lo van a cometer eso y siempre utilizarla, que convengan ese momento no utilicemos una genérica si no nos quedamos muy claros, pues entramos en cualquiera de ellas y vemos lo que ejecuta, vale, esto es el pan de cada día, vale igual que con el resto, yo recomiendo con el resto de funciones lo mismo, vale revisarlo, porque siempre nos fíjamos de muchas funciones de WordPress como el Detight, hay un montón de funciones que nos fíjamos pero quien nos dice si estás protegido o no por la única forma es entrar aquí y ver si están protegidos o no para saber si necesitamos escaparlo o no cuando lo saquemos, esa información vale, hay una pregunta ¿Has comentado el tema de tiempo de ejecución? Me imagino a ver, por ya obtenerlo en cuenta de cara al futuro que las que más añadan serán peticiones a la base de datos me imagino que más añadan tiempo de ejecución porque eso es la que te reelevan solo es ser relevante la cosa es que las llamadas a base de datos si usan las funciones por defecto de WordPress el URL que editó todo esto realmente no importa tanto si consultan la misma información cinco veces porque el cuerpo de WordPress la cachéa y no vuelve a consultar a la base de datos cuando ya lo ha hecho pero sí, la base de datos es uno de los factores más importantes cuando se analista por qué una web tarda mucho en ejecutarse una de las cosas que miras es cuántas queries se está lanzando a la base de datos y ves que está lanzando 400, 500, 600 es un poco exagerado en plan se llama query monitor me imagino que lo conoceréis que ahí te dicen las query y las peticiones que hace es un poco para rendimiento de la página claro, era de cara a me imagino que vosotros que habréis visto mucho más si podíais decir los típicas 3 a 5 razones por las que más se te sobrecarga a lo mejor un plugin de cara a si eso generalmente si pretes llamar query a la base de datos o si había alguna otra cosa que supieres otra también muy típica hace peticiones a una API que te traiga entonces hay una buena práctica, utilizas transient que guarden base de datos el valor de esa API y ya no te has que estar pidiendo continuamente una API otra cosa que no debéis de hacer o evitarlo es llamar librerías de fuera vamos a intentar siempre tener las librerías en nuestro plugin, o sea, no la descargamos y la instalamos típico Google Phone por ejemplo bueno, hay cosas concretas que sí podemos llamar fuera, como fuentes y demás que está permitido hay mucho para tenerla dentro pero por ejemplo en el repo sí está permitido pero muchas gente, un slider que dañan de un slider por ejemplo un carruxer, coge la librería del JSA y la cogen en un external siempre es mejor tenerla dentro del propio plugin de hecho nosotros pedimos que lo hagan salvo excepciones, como fuentes porque el CDN bueno, el de vuestra te mete un segundo de lazo a la hora de cargar la página que es brutal claro, el de vuestra gratuito no vuestra, no perdón, es de phone a Weesson phone a Weesson es brutal entonces os traíis dos archivos, que es CSS y los iconos pues ahí te quita bastante y también importante revisar qué librería tiene Word, pero de por sí porque siempre es lo supertípico y Word tiene una lista de librería ya cargada que es bastante grande así que siempre revisarlo además en la versión se van a ver si se añaden cosas nuevas así que es una cosa, teñar día que sí que va venir bastante bien y también más allá de la eficiencia hablando de las librerías que se cargan desde fuera hace unos meses sucedió que una librería muy famosa que cargaba mucha gente, no recordaba el nombre pero la mantenía alguien y una empresa china le compró el dominio de su web entonces empezaron a meter Marwar en toda la gente que estaba cargando esa librería a través de su cdn entonces bueno también por seguridad, claro, siempre va a ser mejor que la cargue a tu mismo también me aprecia una pregunta hola, qué tal me ha parecido muy interesante quería hacer una punta en el tema del desarrollo del plugin cuando habéis creado el filtro es buena práctica también comprobar que existe el filtro y que existe la función a la que llama porque si no se te cae toda la página si no existiera el filtro o no existiera la función a la que se está llamando no pasa nada si no existiera el filtro no pasaría nada si no existiera la función si no existiera la función si no existiera la función para comprobar lo que es la función más que el filtro yo puedo efectos y lo suelo poner porque a veces incluso dependiendo de otro plugin en el caso del requires, yo no conocía que se podía solicitar que otro plugin estuviera activado y presente en el sistema porque es lo que decís que desativa Google Comerz por una actualización o lo que sea y si hay un plugin que está llamando esas funciones como no las encuentras tú va toda la página de hecho esa cabecera que se programó no te permite desactivar el padre vale y luego una pregunta en el tema de la vulnerabilidad es que es un tema súper importante vosotros tenéis un prefiltro o algún tipo de software que os haga un análisis inicial pero yo por ejemplo lo estoy haciendo para un proyecto y con Quimera te va analizando pues todo el tema de cadenas que no se escapan de llamadas conflictivas o rl y la verdad que ha alucinado bastante porque además analiza toda la página y vienen todos los plugins y hay algunos que tienen unas vulnerabilidades de ejecución de código directamente que puedes inyectar lo que quieras. Hay un proyecto que tenemos en el equipo que es abierto que lo podéis descargar que se llama plugin check plugin y tiene un montón de ejecución a todos como hemos estado hablando de te da un interfalo, tú me abriendo ayer en el contributo y entonces lo que haces es que lo instala en tu work esto siempre intenta ejecutarlo en local lo que le decís que plugin quere analizar y te da un informe bastante desobstivo de un montón de vulnerabilidades que pueden tener. Entonces esta herramienta lleva ya tiempo con un añillo por ahí con nosotros y está funcionando muy bien y lo podéis usar sin problema y además el proyecto está abierto en Gija para que podáis contribuir cualquiera de vosotros vale que un ISO un public with aquí en algún contributo se ha hecho algún public que ahora es que tenéis el proyecto para que podáis ver como va el proceso actuar, cuáles son los checks que tenemos activos, esto no podéis revisar aquí igual que si alguien se anima puede contribuir aquí y poner lo que quieras. Aquí podéis ver el listado el listado de checks que hay ahora mismo que hay unos cuantos y por ejemplo lo que estaba hablando en Paco el escapado de ir sanitizado y te dice que lo donde es porque a ver son tanto códigos en Plagio también más complejos pues más difícil o más fácil que se te escape algo y te haces por una herramienta te ayuda mucho por ahí hay una pregunta sí, sí tiene una duda es que básicamente utilizamos los plugins para crear funciones a medida de un cliente entonces, quieres saber si hay alguna forma igual que hay un que puedes pedir la carga de otro plugin si puedes también pedir controlar que te haces un tema determinado que tenga que un tema, o sea para que el plugin se ejecuta te va a tener un tema que tú ya has creado o un comercial entiendo que sí porque tú el tema se guarda en la tabla de opciones y tú tomas para que te vete la función getoption y se llama theme/slash o algo así o Carren theme es una de ellas y ahí te dice pues el nombre de la carpeta del tema el nombre de la carpeta del tema que hay en este momento cargado con eso lo puedes comprobar también si el tema por lo que sea incluye una función o una clase o lo que sea pues puedes comprobar si la función existe o si la clase existe y con eso puedes verlo porque no estoy seguro si eso va a funcionar de todo porque depende también del momento de la ejecución que es que a mí me no sé si los plugins cargan antes o después del tema y ya lo puedes comprobar dentro de hooks porque seguramente hay un hook que sea después de que cargue el tema hay un hook que activa el plugin después de que cargue el tema comprúebame si existe cierto tema y ya a partir de ahí puede empezar a ejecutar tu código si a veces tienes dudas de cómo se hace esto hay un montón de temas que te dicen oye tengo el requerimiento de este y este plugin ahí se puede ver fácilmente como se realizaría la mejor forma de ver cómo se hace todas cosas de WordPress es viendo alguien que ya ha hecho ya que es OpenSor y eso es lo beneficio que nos da OpenSor poder ver como la hecho otro claro y una cosa que hay que tener en cuenta es que en el desarrollo es el orden de ejecución porque cuando se cargan todos los plugins si tu plugin empieza por la A y quieres comprobar si hay un plugin cargado que empieza por la B no puedes hacerlo antes de que carguen todos los plugins hay un action que se llama plugins loaded que se ejecuta después de que cargan todos los plugins pero fuera de ese si tu plugin por a veces da dios está antes que el otro porque tu plugin se ejecuta antes que el otro técnicamente como veis podríamos estar todo el día hablando de plugins y nada más que nos en el pasillo donde hay nos preguntan las pasillas porque a la unímedia la foto de familia y no vamos a salir no sé si hay alguna pregunta más alguna pregunta rápida o venga vamos a hacernos la foto muchas gracias [Música]
ordion content.