 Vale, pues, sobre todo, muchas gracias por permitirme hoy venir aquí a hablar y contar, o sea, la charlita que íbamos a tener hoy sobre los errores más comunes a la hora de desarrollar Pluggy, vale, va a ser una charla de insa, de insa, de programación, yo voy a intentárselo todo al menos posible, así que disculpa, así, si nos vamos un poco, vale, pero bueno, a ver, lo primero de todo, soy Paco Marciante, para ver que no me conozcas, soy Lee Warped Developer en Babel Group y formo parte del equipo global de Pluggy, vale, junto a Fran, que está por aquí, que lo hemos visto, y otros compañeros de España, que hemos entrado en el nuevo equipo y, pues, muy guay, vale, que poco a poco la comunidad española, pues, estamos entrando dentro de estos equipos como Pluggy y demás y que os animo a todo el que quiera y que se sienta con valor, después de la charla de hoy, que si se sienta animado a querer contribuir con el equipo, pues, el formulario después de siete años, creo que, a vuelta a abrirse, así que os invito a que mandéis vuestra solicitud, por si queréis, entrar dentro del equipo de Pluggy, vale, hoy vamos a hablar sobre errores más comunes a la hora de desarrollar Pluggy y subirlos a repositorio, vale, todos los errores de los que vamos a hablar, los he sacado dentro de las estadísticas de todos los Pluggy que se corrigen dentro de equipo, vale, y se revisan, vale, alrededor de, bueno, algunos dirán, yo ya subió cosas ahí, así que yo ya voy por delante, pero es posible que no, vale, estas estadísticas las he sacado de alrededor de unos 4.000 Pluggy, creo que son bastante más, vale, pero pues tomamos ahí el número, vale, como comprendere, estos son patrones de error que solemos cometer a la hora de desarrollar Pluggy, o sea, yo el primero antes de entrar de equipo de Pluggy cometía algunos de estos errores y nosotros los cometemos, que bueno, la intención de esto no es ni ser mejor o peor, sino que a partir de ahora, concienciarnos, y corregir todas estas manías que tenemos, porque no nos han enseñado desde antes porque nos las conocíamos, vale, y tú irás, ahora yo te puedo decir que es posible, si a mandar algún Pluggy, que tu Pluggy esté dentro de estos 4.000 cancios revisados, vale, para estallarlas, vamos ya directamente al grano, vale, vamos a hablar sobre lo primero todo, lo he puesto en orden de aparición, vale, el orden de errores que más aparecen, no he puesto las estadísticas, que a lo mejor hubiera sido bastante interesante, saber el porcentaje de error que tenemos dentro de esos 4.000, vale, pero prácticamente me lo sé, memoria, de que el 90%, o sea, estos 4.000, 3.000 y pico, 3.000 largos, tienen variables y opciones sin escapar, vale, vamos a ver qué es esto, vamos a ver poco a poco, vale, escapar la salida, vale, he puesto una definición para que entendamos que, vale, escapar la salida es el proceso de asegurar los datos de salida, eliminando los datos que no se han deseado, como etiqueta HML o Scree, vale, esto que me refiero, esto me refiero a esto, ¿cuánto de nosotros habremos hecho un echo y una variable al lado? Esto es un error súper constante que vamos a estar encontrando en muchísimo desarrollo, que nos hagan a medida o, o sea, en muchos tipos de desarrollo PHP nos encontraremos esto, vale, ya sea echo, la variable o una cadena de texto y intremedio concatenado, pues alguna que otra variable, esto es súper común, vale, pero esto tiene un gran un gran problema y es que si nos han metido algún tipo de contenido HTML que no deseemos o Scree, vale, esto directamente lo va a sortar y vamos a tener en nuestra página un Scree que nos hayan metido malicioso que a saber lo que está haciendo, vale, la forma correcta, según Wordpress, vale, es hacer utilizar las funciones de escape que ya nos proporcionan Wordpress de Proceed, vale, como aquí en concreto poder escape HTML, tenemos un montón para todo tipo de atributos, hay muchísimos, muchísimos ejemplos, vale, esto que no va a proporcionar por el escapar la variable lo que va, lo que va a hacer es asegurarnos que lo que vaya a salir, vale, por el echo no tenga tipo de caracteres típicos de lo que se utiliza a la hora de meter HTML o Javascript, vale, desde el equipo de plugin y desde Wordpress, se recomienda siempre utilizar la técnica que llaman de cableit, vale, con lo que esto se refiere súper visual lo vamos a ver, este ejemplo, vale, donde por ejemplo estamos, otra que bien, me estoy recibiendo la variable URL que a saber de dónde viene, que esto no nos podemos fiar porque, o sea, no nos podemos fiar de nadie, o sea, ni de nuestro compañero de al lado, o sea, no nunca te fíe de nadie, porque, porque todos cometemos errores a saber lo que hemos copiado, lo que hemos pegado y lo estamos leyendo aquí, eso ya de primera, vale, no te puedes fiar de ningún tipo de usuario ni no te y no puedes fiarte nunca de ninguna procedencia de información, nunca, aquí, como veréis, ostia lo estamos haciendo bien, no, mira, este escapando el URL, este escapando ese texto que viene por ahí, ahí en medio de los tres puntos a saber qué ocurre en la función y si estamos luego juntando estos URL con otras variables, otras cosas y a saber qué está ocurriendo y luego cuando veas el echo y voy a mostrar la información, ostia, como ya escapado la información para que no vea lo que haces, ¿no? Y como veas aquí mi URL, el emité, mira qué bonito me ha quedado la función echo, que se entiende súper bien, mira qué cuco me ha quedado, vale, esto tiene un problema porque no vamos a, o sea, muy bien que estamos al menos escapando la información, pero entre medio no sabemos qué estamos haciendo con esa variable, por eso se recomienda el escapelate, el escapelate lo que te recomienda es no hacer esto, ¿por qué? Porque hay que hacerlo de esta metodología, vale, escaparlo al final justo antes cuando de utilizar la función echo, hecho porque, porque de esta manera nos va de igual todo lo que haya ocurrido anteriormente, o sea, nos va de igual todo el procesamiento de la variable URL o de la variable text, que cuando justo la voy a imprimir es cuando voy a limpiar y procesar esa variable para que no contengan contenido que, o sea, indebido, ¿sabe? Como etiqueta, dejar aquí, o x que pueda ejecutárselo aquí, lo que estamos siempre intentando es protegerlo para que no se ejecuten este tipo de contenido y el contenido que vaya aquí sea contenido plano, vale, que no ejecute nada, esto sobre todo es un problema típico, por lo que muchas veces vemos vulnerabilidad de X, SS, que lo habremos escuchado muchas veces. Estos tipos de vulnerabilidad que se llama cross-excripting, vale, es que ya que hemos detectado que esta variable no se han protegido, pues por algún formulario por X puedo meterte yo mi consulta javascript y ¿qué se ejecuta aquí? Como esto, no estás comprobando y lo estás tirando, pues te meto yo aquí mi JS y a lo mejor lo que estoy haciendo es meterte una cookie o hacerte X para yo poder procesar la navegación tuya, los datos de tu usuario, estoy enviándome los correos, o sea, se pueden ocurrir barbaridades, ¿vale? Muchas veces seguramente si hay suscritos alguna de las de las newsletter de seguridad habréis escuchado estos errores de X, SS, que se cierran plugins o se mantienen en estado de hibernación para que los autores lo corrijan, pues es por estos tipos, vale, de correcciones que se tienen que hacer y que tienen la variable sin proteger justo cuando se va a imprimir y como el código todo es GPL y todo estamos siempre, siempre lo podemos ver desde el repositorio de plugins, podemos ver el contenido de, es decir, todo el código fuente, hay ciber delincuentes que se dedican a estudiar, buscar estas vulnerabilidades, que si quería ahora os puedo enseñar después de rachar las herramientas para poder buscar dentro de todo el repositorio y poder buscar que he realizado la búsqueda y creo que lo tengo aquí y si no lo hacemos en directo, una búsqueda de a ver si hay algún plugin que tenga un eco y una variable abierta y ya sería poder buscar la forma de meter nuestro contenido y que esto lo lanzará. Así que si lo hacemos así, Chulnory nos va a aprobar y esto va a estar totalmente correcto, vale, para que entrará dentro de los estándares que se piden dentro del repositorio de WordPress. Igualmente aquí con este enlace, vale, aquí tenéis toda la información necesaria sobre el escapado de información, vale, súper recomendable, toda la parte de app y security del repositorio, porque esto nos va a ayudar un montón a la hora de proteger todo nuestro plugin. Ya os digo, esta información está sacada de todos los correos que enviamos desde el equipo de plugin, vale, y toda esa review que se realizamos. Si cumplimos con estos requisitos, nuestro plugin va a ser ya no solo seguro para subir los repositorios y aprobar para que para que entre entre repositorios, sino que va a ser seguro para nuestro cliente y vamos a entregar un producto de muchísima más calidad. Así que estos son, o sea, estos es obligatorio hacerlo, sino vamos a tener un boke de seguridad dentro de nuestro de nuestros desarrollo increíble. Así que tener mucho cuidado sobre todo con el escapado de variable dentro de los echo. O sea, la segunda vulnerabilidad que más encontramos sin duda, vale, son todos los portos, los red, los getters, los head sin proteger o sanitizar. Esto va muy acompañado, vale, del echo también, son conceptos que van muy de la mano, vale. Hay una expresión que me gusta mucho que está dentro del repositorio, que es españolizado, que es desinfecta temprano o sanitiza early, escapa tarde, escapa la variable tarde y valida siempre, vale. Esto lo que se refiere, lo es que en late, vale, y siempre va a lidar todo. O sea, no tenemos que fiar nunca, que esto es un error que hacemos muchísimos desarrolladores de. Yo recibo esto, esto es muy prueba, funciona, esto tira para antes. Pues eso, según los estandares de warpen, nunca hay que hacerlo, vale. Y ya no solo estandares de warpen, sino estandares de la vida del desarrollo, vale. Nunca tenemos que presuponer que todo lo que nos vamos a recibir es bonito y es bueno, porque ahora el mundo conocemos como es internet y si nos queremos que al final nos entre algún ciber delincuente de la otra, desde otro lado del mundo y se quede con nuestra página, pues vamos a seguir estos estandares, vale. Son súper recomendados, o sea, desde que, esto ya lo llevas a tabla, desde que en tener equipo de plugin y desde que estoy en ese día a día escribiendo estos correos, revisando el código de más, usted más personalmente tiene un crecimiento a nivel de seguridad dentro del código, que es que ya me llaman en el día a día pesado, porque ya no dejo pasar nada, o sea, nada del código que no esté correctamente preparado, vale. Así que, esto súper recomendado. Sanitizar, vale. Sanitizar toda esa desinfección del contenido que nos va a entrar desde fuera, con los polls, vale, que hemos recibido los get que tenemos que desinfectar todo ese contenido que nos llegue, porque, o sea, no te puede fiar de lo que te van a venir por esa variable, o sea, eso es el mayor boquete, o sea, la mayor parte es una, imaginarse eso en una puerta abierta. Ahora lo que tenemos que ver es si queremos al guardia, al memes del guardia, revisando a las personas que deja pasar a todo el mundo, o si queremos proteger de verdad para que aquí no nos pueda meter el contenido que quiera el ciber delincuente. Por eso, tenemos muchos tipos de variables que nos dan, muchísimas funciones, como por ejemplo, en este caso, Sanitizar es Phil, o hay pues hay muchísimas funciones que ya nos aporta WordPress para desinfectar este código. Esto, al final, lo que está haciendo para entrar, meter expresiones regulares para que el contenido que entre, para que un contenido de entre sólo sea lo que esperamos y no nos venga aquí inyecciones SQL, no nos venga SQL, deja de escribir contenido a 7.5, es que aquí puede entrar cualquier cosa. Eso es la puerta abierta de tu casa, así que por favor utilicemos las funciones de Sanitizar, que nos da WordPress para que esa puerta al menos te cerra y tú miras y por así de atrás, un poquito, a ver, tú quién eres y tú por qué quieres entrar aquí, pues al menos con estas funciones vamos a poder hacerlo, imaginarse. Estos son ejemplos que estoy sacando directamente del repositor de WordPress, vale, donde aquí este título que se supone que lo estamos recibiendo por un pos, vale, desde fuera hace un data, pues mete directamente lo estamos metiendo dentro de la base de datos nuestra. Si esto no lo hicieramos, ya directamente en la base de datos tenemos un boquete así de grande, vale, que nos está metiendo jamás que ya saco, imaginarse. Entonces cuando haga leico, que el leico tampoco lo tenga protegido, por imaginarse lo que se hará para afuera, vale, por eso digo que están muy relacionados, porque a la hora de hacer leico, que hablábamos antes, tampoco nos podemos fiar de ni del hotion ni de las funciones propias de que vamos a utilizar dentro de WordPress, por el hecho de que no sabemos lo que tenemos poco en la base de datos, o sea, no nos podemos fiar de los usuarios, no podemos fiar de nuestra propia base de datos, o sea, contra más restricciones pongamos y más comprobaciones, muchísimo mejor, vale. Otros laces de API security, vale, para todo el tema de sanitizado y securización de código, vale, es súper útil, porque aquí vamos a tener muchísimas funciones y todas explicadas de una por una, para que mejor utilicen la mejor sanitiza e-mail, pues ya nos va a preparar las expresiones regulares para que compruebe el correo y se lo deje pasar correos y nos indique si está bien o está mal, igual que este, pues tenemos muchísimas tipos de funciones, no, o sea, no me paro en entrar dentro de cada uno a ver todo el contenido, porque si no aquí, o sea, se la puede durar un montón de años. Yo dejo estas borreles y luego comparto las diapositivas para que podáis utilizarlo y esto como dumentación de tenerlo al lado, cuando te desarrolles tu plan y te vas comprobando que todas estas cosas tengan, te puede servir súper bien, vale, o sea, esto se ve súper poco, es el único código que puse aquí, porque el otro día ya estaba cansado de poner diapositivas y pegar el código de repositorio, vale. A la hora de validar, pues esta vez una de validaciones simple que primero que debemos de hacer, por ejemplo, vamos a recibir por un post el zip code del, o sea, se me ha ido en español, no me acuerdo, la dirección postal, por ejemplo, pues esa variable que estamos recibiendo tiene algo, es la primera pregunta que nos debería más igual que esta comprobación, es que es la más simple que primero deberíamos de hacer con todo, una detrás de otra, tenemos muchísimas comprobaciones para asegurarnos que vamos a recibir lo que queremos, vale. Lo mismo, os pongo estas borreles donde aquí está el compendio de todo, igual para hacer todas las validaciones, las validaciones que tiene Wordplay, ya de por sí también para este tipo de contenido, aquí vamos a este compendio de security, ya os digo, súper útil, o sea, si no lo habéis leído es una lectura muy obligatoria, si queremos mejorar nuestro desarrollo, porque es obligatorio, o sea, es súper obligatorio a la hora de subir un plugin de repositorio, porque todos los clients que suben a repositorio a nivel de seguridad están comprobados y que cumplen con todos estos requisitos, vale. Así que os recomiendo estas borreles súper importantes para tenerla siempre en tu marcador para poder revisar todos estos tipos de desarrollo. Les he puesto a revés. Databa la Validation, vale, que es la URL de Validación. Creía que no había puesto. Igualmente, con esta anterior tenemos las tres. Es la padre del resto de página y os recomiendo esta lectura, que no es que sea muy interesante a nivel de lectura para ir en el trayendo algo, pero bueno, al revés de desarrollo sí que os recomiendo que tengáis este, pero estás despierto porque esto es lectura densa, porque esto si os queréis dormir es muy buena lectura, así que por la noche antes de dormir te lo leí, te quedas frito. Si hacéis todo esto han solo si os lo compras, vale. Otros de los errores, o sea, vamos a hablar simple de errores que se cometen a la hora de subir el repositorio, este volta incorrecto. ¿Esto qué? ¿Vale? La versión indicada en todo el plugin y en todo el remit siempre debe ser la misma. Es un error súper común que hace todos los autores a la hora de subir el plugin y el repositorio, pero ya os digo que más de la mitad de los plugins que se suben al repositorio, que este es el top 3, si no que Frank me corrija, pero son de los errores que más salen, vale. A este volta me refiero a las etiquetas estas que vemos en el remit, vale, que pone este volta donde tiene que estar la misma versión que indica la versión del plugin. Por ejemplo, en este caso, que aunque son capturas y salen repositorios, ya sabéis de cuándo son, fíjese, pues esto es un ejemplo de este volta que estaría mal, ¿vale? Este volta, si queremos subirlo al repositorio, nuestro plugin debe ser el mismo que la versión que estamos indicando dentro del plugin, ¿vale? ¿Por qué? Porque esto, si lo ponemos mal, a la hora de descargarnos del repositorio, va a haber conflicto, ¿vale? Y no va a descargarnos la versión correcta. Entonces, por eso, esto siempre tiene que ser la versión que indiquemos en la versión del plugin. Esto, ya os digo, es que más de la mitad de los desarrolladores que suben, o sea, de los autores que suben plugin, esto lo tienen mal. Y es un error súper, o sea, súper común. Esto, porque, o sea, yo lo pienso, ¿eh? Porque, o sea, es que ni han leído lo que están, o sea, que yo creo que uno de los problemas es que es muy denso el handbook de plugin y es que ni lo leí. Para ello, desde el equipo de plugin, siempre se recomienda usar el versionado semántico, ¿vale? Que ahí pongo la URL de esta tipología de este tipo de versionado, ¿vale? Que el versionado que vemos el día a día en Wordpress, ¿vale? De 6.2, 6.2.1, donde separamos versiones mayores, versiones menores, ¿vale? Pues ese tipo es muy sencillo el que utiliza la mayoría de desarrollo y todo lo que vemos en Wordpress utiliza este tipo de versionado, así que os lo recomiendo. Error súper común que hacemos todos, o sea, todos, todos, todos y me incluyo yo, ¿eh? Funciones, clases, define, option, genérico, sin prefijo. ¿Quién no ha hecho esto? O sea, que hay que, que levanta la mano y que no lo haya hecho. Que yo no me lo creo, ¿vale? Que nos va a llamar cualquier tema o plugin y que no tenga a nosotros copiado esto en algún sitio. O sea, yo no me lo creo y bueno, y bueno, vale, que no tenga el may, pero en Qscript, cualquier cosa de ésta, o sea, solo lo hemos hecho a todo el mundo, ¿vale? Esto está mal. Igual que estaría mal, como yo me llamo Paco, voy a poner PC. Pues a mí está mal porque, o sea, Wordpress tiene el repositorio, puede haber alojado a días de hoy, alojado en total, nos está hablando solo de los, de los que están activos. Unos 100, más de 100,000 plugins. A alguien se le habrá ocurrido también poner un prefijo de dos letras, que se llama el PC. Se recomienda más de cuatro. Yo, por ejemplo, yo personalmente, a los que tienen cuatro prefijos, como por ejemplo, me llamo Paco, pues voy a poner Paco, pero que cuántos Paco hay en el mundo. También está mal, yo, aunque se recomienda que sea a partir de cuatro, yo con cuatro también le mando el mensajito de, oye, arreglalo y pon un prefijo que tenga un poco más de salero. ¿Por qué? Porque imaginarse que yo Paco subo mi plugin, la Pacopedia, a repositorio, me la aceptan con Paco, pero luego, años después va a venir otro Paco y le pone también Paco. Lo cumple, sí, está bien, pero va a dar un pete esto que flipa, ¿vale? Te va a dar un error porque va a detectar que hay dos funciones que se llaman igual y va a dar un pete por todo el lado. He buscado si había funciones que se llamaban Paco, ¿vale? Pero lo máximo que he encontrado es que el Google Security prohíbe que se use Paco dentro de la contraseña, es lo único que encontrar. Esta es la herramienta que comentaba anteriormente, con el que vais a poder tirar las consultas en todo el repositorio, ¿vale? Tiene una copia de repositorio y vamos a poder hacer consultas para poder encontrar si hay expresiones regulares que le lancemos. Es una rabinta que os lo recomiendo bastante y que es bastante útil. Bueno, yo lo uso bastante para ver estos de los prefijos por si hay alguno que está repetido, pues también se lo diría, ¿no? Oye, tu prefijo está bien, pero ya hay plugin que lo están utilizando, así que, por favor, y esto va a ocurrir cuando tengamos prefijos de 3, prefijos de 4, es muy normal que haya algún plugin dentro de los 100 mil plugins que hay, que ya utilice, ¿vale? ¿Qué estaría bien? Pues a ver, no voy a recomendar que utilice vuestro nombre, pero Paco Marchante y la función que sea, pues sí sería ya un poco más correcta, ¿vale? ¿Qué recomendamos siempre? Que sea algo parecido como el nombre de vuestro plugin. Es súper complicado que el nombre de vuestro plugin o un prefijo que saquemos con el nombre de nuestro plugin, de nuestra empresa, prefijo de empresa más nombre de plugin. Lo que intentamos con esto es que no haya dos funciones que se hagan igual, así que vamos a intentar buscar prefijo que eso lo vayamos a utilizar nosotros, por eso el nombre de vuestra empresa es súper útil, o el nombre de nuestro plugin, pero bueno, si a cuánto plugin de calle o de SEO habremos visto y que pongamos SEO, no sé qué, no sé cuánto, también puede llevar problemas, por eso el nombre de, yo siempre creo que lo que yo utilizaba era el nombre de la empresa, con unos prefijos así, solo con, solo con las consonantes y el nombre del plugin, por ejemplo, pero prefijo, pero chicos, no pongamos el nombre del plugin que sea más grande nombre del prefijo que la función, también tenemos que llegar a un consenso. Otro tema super importante y que esto es muy común que hagamos esta niapilla dentro de los desarrollos a medida, ¿vale? El tested app, tú que sea incorrecto, dentro de, si queremos nuestro plugin, subirlo al repositorio, este test app es muy normal que venga mal y venga con versiones activas, porque los desarrollos se suelen confundir y ponen ahí las versiones del plugin en vez de la versión de WordPress, y eso es muy importante que sea justamente la versión mayor que estamos utilizando, o sea, no pueden ser ni versiones anteriores, o sea, ni versiones mayores anteriores, ni versiones posteriores, porque digo que es una niapilla que eso se hace mucho. He visto en muchos clientes que desarrolladores han puesto el test app, porque han tocado ese plugin y han puesto una versión la 9999, y entonces eso plugin nunca se va a autorizar, ¿vale? Pues a la hora de subirlo al repositorio, esto tiene que ser justo el que sea la versión mayor. Por ejemplo, si estamos en la 2.2, ¿vale? La versión mayor tiene que ser, o sea, no puede ser ni mayor ni inferior, ¿vale? No vale con 6.1, no vale con la 7.0, ¿vale? Tiene que ser justo la 6.2, 6.2.1. Lo importante es la versión mayor. La versión mayor en WordPress es el conjunto entre la versión actual que estamos en la 6 y el punto 2, que es la versión mayor actual. Vale, ese conjunto lo que se considera versión mayor y a las menores son la 6.2.1 o 6.2.2, eso ya es, el punto 1 y el punto 2 ya serían la versión menor, ¿vale? Pero el conjunto de 6.2, 6.3, eso es como se conoce en WordPress como versión mayor. Por eso, si queremos subir el repositorio, tiene que ser justo la versión que esté probada contra la versión que estemos actualmente. O sea, no vale que tú la haya probada con la 5.7 o con la 5.9. Tiene que estar justo con la versión que estemos ahora. Vale, esto es un error súper común. Otro error que hacemos mucho, vale, es llamar archivos remotos, tanto Javascript, imágenes, SSS, etcétera. Esto que me refiero, cuánto habremos tirado de librerías y como más fácil por el tiro de una cdn, así no me la tengo que descargar, porque me dan un montón de pereza descargarme, y lo que hago es me la descargo. O sea, la tiro contra la URL de la cdn donde están los Javas y así no tengo que estar descargando. Que lío, que lío. Eso no se permite. ¿Por qué? Porque entonces estamos metiendo más dependencia en nuestra web. Imaginarse si todos los plugins que tenemos instalados tuvieran dependencia también. Es que entonces apague y vámonos, porque si entonces tengo que estar esperando, hay que cargar en todas las librerías que queremos utilizar, todos los desarrolladores, de todos los plugins que tenemos instalados, la web en dos segundos, en un segundo no cargan tu vida. Por eso, es siempre muy estricto esta comprobación para que no se carguen cosas de fuera. Es que no va a encontrar barbaridades de para cargar una imagen, o para cargar un icono solo, estamos cargando una fuente completa. Y lo que el plugin lo que se está haciendo al final es meterte un icono de wasa y te está tirando una librería entera, o sea, una librería entera de fuente para poder cargarte ese icono. Ostia, puede imaginarse como eso todo lo que puede ocurrir, con desarrollos que tuviéramos un plugin. Nada dependencia de archivos externos, nada de javas clientes, nada de hojas de estilo externa, nada de imágenes externa, vale. Para ello vamos a descargarlo y lo metemos dentro de nuestro plugin. Es por eso mismo, porque a la hora de desarrollar vamos a pellicar en el cliente, y si vamos a subir la repositoria, nuestros clientes ya son todas las personas que se van a descargar, entonces, si van a meter un montón de dependencia dentro de las páginas de esta persona, dentro de lo vuelve de esta persona, pues imagínense la que podemos leer. Y si eso se permitiera, o sea, si esto se permitiera, vuelve sería infumable. O sea, tener 10 plugins ya sería súper lento, ya tendríamos que estar esperando a que se carguen todos los avas crics, todas cosas de todos, de todos los plugins, sería una locura. Y ya no imaginemos que la cdn se caiga, o que vaya lento, que vaya, entonces nada de freng con archivos de ayuda, y nada de freng en los backoffers. Esto es una cosa que no tengo puesta, pero que es muy relacionada. No sé por qué, yo creo que es más complicado, pero es que siempre pensamos que todo el mundo piensa que va a hacer las cosas fáciles como pa ahorrarse tiempo, pero es que hay gente que la hace difícil, y coge un archivo que tiene en su página, en su dominio, en su hosting y alojado, y lo que está haciendo, en vez de ponerte una url en el administrador del worldplay, lo que te está metiendo es un freng con todo el archivo, o un freng con todo el administrador y todo, hostia, o todo esto tampoco se permite, vale, para esto mejor incluye un enlace al archivo o incluye el documento dentro del plugin, pero no usted coge un, o sea no, no hagamos las cosas difíciles, siempre vamos a pensar en hacer las cosas fáciles, en hacer las cosas cómodas para el usuario, porque si no los primeros que no entran en el repositorio, porque una cosa importante es que el repositorio no está obligado a lojar ningún plugin, entonces si tú ya ve algo raro por ahí, hostia, bueno, y ya no hablemos de llamar a imágenes de tu dominio o de otro, o a saber, o sea, hace poco por ejemplo encontré un plugin que para cargado el foto, la estaba, la había metido, o sea, la estaba cargando una de Google de una foto que había encontrado el autor en Google y la había copiado y pegado la url y otra que está cogiendo del dominio y demás, esto no lo hagamos, vale, esto vamos a incluir las imágenes dentro de nuestro plugin, o sea, nuestro plugin tiene que funcionar por sí solo, o sea, no tenemos que estar dependiendo de cosas de afuera, ese es el resumen, vale, y esto también para los desarrollos que hagamos en otros clientes, aunque somos es más laxo, eso sí que podríamos cargar estos tipos de dependencias de afuera, algunas, como alguna librería, demás, que nos queramos estar descargándolo y demás, así lo podríamos hacer y a ver, yo soy el primero que seguramente uno de mis desarrollos tenga alguna dependencia de alguna CDN, pero siempre mejor hacerlo descargándolo y que nuestro plugin y estos desarrollos sean autoconclusivos y puedan funcionar por sí solo, pero hay cosas que están permitidas, vale, incluir fuentes de Google Phone, eso sí, eso sí está permitido, o de una CDN que sea compatible con las GPs, eso también está permitido, ya vamos terminando, vale, incluir tus propios calls, vale, el tipo de call que estamos haciendo esto en Google pues no se puede, a ver, no es que no se pueda, es que es mejor utilizar, vale, los calls son las funciones, vale, que utilizamos dentro de PHP, bueno, y dentro de un montón de lenguaje porque esto no es algo de solo de PHP, vale, este protocolo con el cual vamos a solicitar o enviar contenido de otros servidores, vale, Google ya tiene las suyas, eso funciona, bueno, eso son las dos más importantes, vale, que vamos a estar utilizando de nosotros día a día, mejor utiliza esto que utiliza un call, vale, para entrar dentro del repositorio un plugin, para entrar dentro del repositorio, no se permite, o sea, si no se desaconseja el uso de los calls, vale, no está permitido, pero en, por fuerza mayor, el desarrollo no nos permite, por algún motivo no utiliza, no sabría decirte, utiliza estas dos funciones, pues sí lo puede utilizar, vale, al final si se habla con el equipo de plugin y si seguirá estresando esto por esto, por esta otra cosa, ping-pang, o puede entrar para dentro, pero sí, siempre llegando a un consenso y el por qué, sí se permite, o sea, me estaréis pensando a algún desarrollador que otro, oye, y si estoy metiendo con Composer una librería de fuera y si utiliza los calls que tengo que armodificar la librería, no, si son librerías externas y demás, si se permite la utilización de los calls, vale, aquí tengo toda la documentación y, hostia, esto lo aplica, yo creo que es la mejor documentación de sobrepagespe, donde se puede explicar esto, los wrep en queue, hostia, no hagas esto, vale, no metas en los, que los CSS no los metas así, vale, dentro de las cabeceras y harcó de, venga, vamos a utilizar las funciones que nos da wrep, vale, esto es súper cómodo, vale, esto también nos ha encontrado muchísimos errores de, de autores que, tienen harcó de todos los, todas las dependencias, todas las cargas de archivos, las tienen ahí puestas, llamar de manera incorrecta o meter harcó de ar, los paths, aquí te pueden contar barbaridades, vale, a esto que me refiero a esto, vale, no hagamos estas barbaridades de poner toda la URL hasta archivo, o sea, nunca, o sea, la que podemos liar aquí por, es que, es que a saber que no podemos tener, tener en cuenta en dónde se va a utilizar nuestro plugin, o sea, utilizar muchísimos sitios, a saber, y esto ya es solo un ejemplo tonto con un en queue, vale, nunca, la que está en tefile, es nuestro amigo, esto utilizarlo, vale, no, no, esto no, por favor, vale, cargarlo con PHP y notar esta herramienta para que no tengamos que estar dándonos cabezas su control a la pared, para poner todo la, todo el path entero, así que por favor vamos a utilizar las herramientas que nos dan propio lenguaje para, para poder construir, vale, los paths de las direcciones de los archivos, y aquí tiene un montón de funciones que ya nos da work, pero de pro sí, para directamente ya encontrar la URL de la hon, la URL de la carpeta de plugins, la carpeta de temas, aquí tenemos un montón de funciones que ya work, de pro sí, nos lo da, oye mira, otra cosa súper importante, que no, que no ha revisado la, la diapositiva, y lo tenía apuntada, vale, por favor, no incluyamos librerías que ya están ahí en WordPress, jQuery, por ejemplo, o sea, no hemos encontrado, o sea, seguramente el primero que, que seguro que ha incluido jQuery en algunos de esos desarrollos, sí que se pueden negociar, meter versiones antiguas o otro tipo de versiones, porque nuestro desarrollo justo, nuestras librerías solo funcionan con estas versiones y demás, pues se puede llegar con senso para poder incluirlo, vale. Aquí tenéis una URL con todas las librerías que vuelve a día de hoy, la están utilizando. Esta URL no es muy buena, vale, así que rebuscando en los correos que se mandan, encontré esta otra URL, vale, que es el de los créditos, a la hora que sale una versión, aquí están los créditos también a todas las librerías que se utilizan dentro de WordPress. Si queremos saber la de Quarker Plagging, en vez de WP62, que es de la 62, ponemos C1, 5.9, X, la que toque. Y con esto aquí vamos a ver todas las librerías que se incluyen. Un montón de veces encontramos autores que ni han mirado esto, pero porque no lo conocen, por desconocimiento, ya que el handbook es demasiado extenso para poder leerlo, todo. Y no saben que estas librerías están dentro de WordPress. Y si pasa con otra query, ya no te digo con librería que están aquí metidas, que ni sabes tú qué está, es otro tipo de error, pero vamos relacionados y por eso tampoco iba a hablar mucho de esto, de incluir librerías que están deprecadas, vale, que están versiones antiguas, que ya no se utilizan, que tienen vulnerabilidad y que son bastante conocidas. No metamos, por favor, librerías o cualquier tipo de script que encontremos por Jihad y demás que estén deprecadas o que no tengan suerte. Si nos queremos luego tener que ir a... Porque después decimos, hostias, tío. A uno de mis clientes le han metido una cosa en la base de datos, un hacker le ha metido un... uno es que es la base de datos, tengo aquí unas cosas, tío, y es que ¿por qué puede ser? Hostias, es que es que fíjarse todo de aquí para arriba, si empezamos de nuevo, todas las cosas por las que pueden ser. Porque es que el otro día me vino un compañero de Sevilla en el Wordpress Day, tío, algo. Tiene que ser algún plugin que está desactualizado o algo, que le han metido a un cliente mío una ingresión SQL y estirando cabezazo. Fue lo primero que tiene que revisar que todo esto está actualizado. Lo que es que no lo he revisado las últimas que yo antes corriendo. Vale, no utilicemos los short tags de PHP. Vale, los short tags es esto. Vale, pase el eco directamente y ahorrarnos esos segundos para escribir el eco. No lo utilicemos, vale. Hay muchos servidores que no controlamos, que no tienen activado y pueden entrar en conflicto. Y esto no soluciona nada, porque hay muchos code sniffers y demás que para las comprobaciones que estén correctamente escapados, que es el primer error que veíamos al principio, de que el eco estén correctamente escapados, estos short tags no son capaces de revisarlo bien. Por eso el comienzo de QML también empieza igual que el de PHP, con la etiqueta interrogante. Y si lo ponemos justamente así, les cuesta a los code sniffers mucho poder revisarlo. Esto, entonces, desde WordPress no se permite su utilización por este emollido, porque no ganamos nada con utilizarlo al revés. Hacemos que pueda hacer mucho más inseguro en nuestro sitio y que a lo mejor en el servidor, ya sabéis quién, puede que pete. Así que siempre es que vamos a, aunque sea para escribir un eco ahí en medio y ya está, vamos a utilizarlo. Y con esto, creo que hemos revisado un montón de errores dentro del repositorio. Y si tenéis cualquier duda de cómo de eso, podéis hacerlo. Si queréis contactar conmigo, solo a través de Twitter. Por el resto de cosas la tengo cerrado por, por si acaso. Gracias Paco. Yo no lo dije, iba a ser denso. Porque no es una charla para bromita, pero bueno.