 Muy buenas, Jordan. ¿Qué tal? Bueno, parece que no funciona el audio. Ahora sí, Jordan. Muy buenas tardes. Oye, gracias por estar aquí. Vaya día de ponencias que llevamos, eh. Vaya pasada de ventazo. Así es. Bueno, vamos con tu charla, Jordan. Te voy a presentar antes de empezar, ¿vale? Directamente desde Venezuela. Un saludo a todo Venezuela. Es un desarrollador de soluciones web para pequeñas y medianas empresas dedicándole casi toda su atención al desarrollo con WordPress. En esta ponencia nos va a enseñar a conectar los plugins y temas personalizados con una biblioteca que te permitirá proporcionar actualizaciones automáticas a los usuarios desde su propia web o desde servidor privado. ¿Cómo es esto? Pues, oye, tenemos aquí a Jordan para que no lo enseñe. Jordan, su tu ponencia actualizaciones automáticas para los plugins, para tus plugins y temas personalizados. Os recuerdo a todos preguntas al final de la ponencia, ¿de acuerdo? Jordan, adelante, son todos tuyos. Vale. Antes me pasaba que desarrollaba plugins y temas personalizados para clientes y pasado algún tiempo los actualizaba modificando o añadiendo líneas de código para corregir algún fallo o incluir una nueva característica. Al hacer eso, necesitaba que él o los clientes actualizaran el plugin o tema la última versión. Algunas veces no tenía exceso a FTP o al escritorio de WordPress, lo cual dificultaba la tarea significativamente haciéndome perder horas de tiempo y ganando algún que otro dolor de cabeza. Esas situaciones me llevaron a preguntarme qué debo hacer para ofrecer actualizaciones automáticas a mis plugins y temas. La solución que conseguí no solo es fácil, sino que además es gratis, incluir una biblioteca en vuestros plugins y temas que gestione la descarga, instalación y activación de las nuevas actualizaciones disponibles. Mi nombre es Jordan Suárez, vivo en Venezuela y soy desarrollador y diseñador web especializado de WordPress. También soy miembro activo de la comunidad trabajando con los equipos políglotas, WordPress TV y soporte y además he compartido algunos plugins en el repositorio oficial. Si quieren contactarme pueden hacerlo desde mi web o mis cuentas de Telegram o Twitter. No se diga más y pongámonos manos a la obra. Esta es la web de un cliente que todavía está vacía. De hecho si nos vamos a plugins todavía no hay nada. Este cliente quiere mostrar en la parte superior del escritorio frases tomadas de las canciones del cantador venezolano Simon Lias. Partiendo de Hello Dolly, el famoso plugin de WordPress que viene instalado, le hice una versión creo ya llamada Hola Tio Simón. Este plugin está constituido básicamente de este archivo Hola Tio Simón junto PHP y ya tiene algunas canciones instaladas o escritas. Esta es la versión inicial así que vamos a llamarla Hola Tio Simón 1.0 y la guardamos en el formato zip que es el que nos permite usar PHP y específicamente WordPress desde el escritorio. Vamos en un momento a WordPress, el escritorio específicamente es de store plugins, añadir nuevo, subir plugin, seleccionar archivo y seleccionamos el archivo que acabamos de comprimir. Vamos a hacer clic en instalar ahora y apenas en instale podemos activar el plugin. Ya el plugin empieza a aplicarse. De hecho sí, actualizamos, vas cambiando la frase tal como lo quería el cliente. Pero ahora el cliente quiere que aparezca el nombre del cantador al final. Vamos entonces a abrir el directorio de desarrollo del plugin con mi editor de código favorito Visual Studio Pose. Bien, estando aquí voy a ubicar la línea donde debería añadir el nombre del autor, específicamente esta. Voy aquí a escribir yo largo Simón 10. Ahora voy a seleccionar esa frase y voy a encapsularla en una etiqueta HTML Strong que me permite añadir negrita al texto. Ahora voy a cambiar la versión del archivo a la versión 1.1 y vuelvo a guardar este directorio en formato zip y añadiendo al final 1.1 aceptar. Ya tengo la versión 1.1 en el archivo. Entonces voy de nuevo al escritorio específicamente al gestor de plugins. Añado un nuevo plugin, le digo que voy a subir uno, selecciono el archivo específicamente el 1.1 y hago clic en instalar ahora. El problema es que WordPress me va a devolver un error porque el nombre del directorio es el mismo. Es aquí donde cobra importancia tener una solución que nos permita actualizar desde un espacio privado. Entonces, bueno, vamos a ver cómo lo podemos hacer. Este es el repository on GitHub de la biblioteca plugin update checker. Esta biblioteca está bien documentada. De hecho, aparte de lo que vamos a aprender hoy que es cómo actualizar nuestros plugins y temas desde un espacio otolojado, también se pueden hacer integraciones con GitHub y para que de GitHub. Para poder hacerlo funcionar en un servidor propio, primero tenemos que bajar la última versión de la herramienta que a día de hoy es la 4.9. Vamos a hacer clic aquí donde dice source code o código fuente en formato zip y ya tenemos la biblioteca. Dentro de esa biblioteca hay un directorio que se llama ejemplos o examples en inglés y dentro de ese directorio hay dos plantillas en formato JSON, una para plugins y otra para temas. Cada una tiene una serie de metadata que hay que ir completando para hacerlo funcionar y conectar con nuestros plugins. Ese archivo o esa plantilla hay que rehombrarla con el nombre o el slope del plugin. No es necesario, pero es recomendado y luego hay que subirla a la unicación que tiene que ser públicamente accesible por el plugin desde la instalación del cliente para que eventualmente funcione la actualización. Y finalmente hay que añadir la biblioteca en el plugin y conectar con el archivo principal del plugin a esa biblioteca. Este pedacito de código que acabo de copiar hay que configurarlo para que funcione. Ya vamos a ver cómo funciona esto o cómo se conecta. Primero voy a abrir el archivo zip. Voy a minimizar esto. Voy a abrir ahora el directorio personalizado donde tengo el proyecto del plugin. Voy a abrir el plugin y voy a arrastrar el directorio que acabo de descargar acá. Es decir del archivo comprimido voy a extraer el directorio acá y voy a renombrarlo para quitar la versión yon 4.9. Voy a quitar acá dentro de donde están las plantillas las plantillas que acabo de comentar. Estas plantillas ya las completé así que no las voy a revisar por ahora. Ahora le echamos un vistazo a cómo lo hice yo. Y dentro de este archivo voy a añadir la conexión a la biblioteca, el llamado a la biblioteca. Después de este pedacito de código voy a pegar el código que copié de la web de la documentación y aquí vamos a tratar de entender qué es lo que pasa. Hay que editar tres líneas. La primera es la ruta al archivo principal de la biblioteca que es pluginupdatechecker.php y la ruta aquí de hecho nos dice literalmente ruta a pluginupdatechecker. Vamos a quitar esta parte que dice ruta en inglés para que nos quede solamente pluginupdatechecker el directorio y pluginupdatechecker.php el archivo. De hecho si vemos acá tenemos el directorio y tenemos el archivo. Ya conectamos con esto. La segunda parte que hay que editar es la url del archivo JSON que va a estar en nuestro servidor. En este caso voy a borrar todo esto hasta acá y voy a escribir la url del servidor local que voy a usar como prueba. Yordan Suárez, punto local, barra, plugins, barra, hola, yon, tío, yon, simón. Ok y ahora copio este pedazo que a la vez es el slug del plugin y lo pegó acá y guardó. Ahora vamos a realizar un momento para que veamos dónde está ese archivo. Ese archivo está aquí en jordansuárez.local. Realmente esto es un otro servidor local igual que el del cliente, los estoy ejecutando aquí mismo en esta máquina, pero funciona igual como si estuviera en internet. Supongamos que esta es mi web jordansuar.es. Dentro del directorio Rails creo plugins y dentro del plugins tengo el archivo a actualizar y el archivo JSON que es el que acabo de hacer el llamado en el plugin, en el archivo principal del plugin que es esta. Esta es la ruta que llama ese archivo en particular. Ahora voy a guardar este momento. Este archivo yo lo había editado hace un momento poniéndole como versión 1.1. Ahora voy a ponerle 1.0 y voy a guardar. Voy a minimizar acá y voy a abrir la web del cliente. Vámonos a plugins instalados. Voy a desactivar este y eliminarlo. Este plugin es el que no tiene la biblioteca, el primero que utilizamos como ejemplo para entender por qué vale la pena incluir una biblioteca. Ok, añadir nuevo, subir, seleccionar archivo. Ajo, se me lo voy a borrar estos dos archivos y voy a crear este archivo o un archivo comprimido a partir del directorio modificado el que ya incluye la biblioteca. Entonces vamos a ponerle acá ion 1.0, aceptar, añado el archivo, hago client instalada ahora, activo el plugin y ya inmediatamente me hace la conexión con el servidor local. Si hacemos clic aquí en revisar los detalles me va a decir o me va a mostrar la información que está en el archivo Jason. Vamos a ver, voy a abrir acá alinear a la derecha y esto acá a la izquierda, pero por cierto voy a meter un momento acá en el directorio lo que sería nuestra web como desarrolladores y voy a abrir el archivo Jason. Voy a minimizar esto y aquí puedo ver la información que me está mostrando en la web del cliente. Por ejemplo, el nombre de plugin o la Tio Simón está acá, la versión 1.1, el autor, la web del autor, si posicioné el puntero en aquí en inferior izquierda me muestro la web. La descripción, este plugin muestra citas de letras, de canciones, del canto autor mesolano Simón Díaz en el escritorio, vamos a ver si es verdad, miren lo que está, pero también me muestra el registro de cambios, vamos a ver, aquí dice change lock, añadida, vamos a decir que me muestra toda la línea aquí mismo, añadida una nueva letra, mi creencia y añadido el nombre Simón Díaz al final de cada frase, mirelo, acá está. Entonces es interesante porque se puede controlar toda la información que se muestra desde la vista previa de la actualización o los detalles de la actualización. Ahora si hacemos clic en instalar ahora, se instalaría esa versión que acabo de mostrar, pero quiero que veamos o lo veamos desde acá, desde esta sección, porque si lo actualizamos de aquí va a actualizar, pero no nos va a mostrar los detalles, vamos a hacerlo aquí desde actualización, por cierto este icono que se ve aquí es un icono genérico que tiene la biblioteca, pero usted no puede personalizar con el icono que usted diseña, vamos a hacer clic aquí, actualizar plugins y aquí nos va a actualizar, pero si vemos los detalles, mire la URL desde donde está actualizando, actualizan de YoRanSuales.local, plugins o la Tio Simón 1.1.6. Ahora si nos vamos a plugins, ya nos muestra la versión 1.1 y nos está mostrando el cambio que es el nombre de Simón Díaz. Si vamos a los archivos JSON nuevamente y le ponemos 1.2 y cambiamos aquí el archivo 1.2 y guardo, al hacer clic aquí en comprobar actualizaciones, inmediatamente me va a decir que hay una versión más nueva, 1.2 claro, como realmente el archivo no existe, si hago clic en actualizar ahora, me debería dar un error y el error es archivo no encontrado. Llegado a este punto, el siguiente paso sería tratar de automatizar al máximo la carga de los metadatos en el archivo JSON, porque hacerlo a mano, especialmente cuando es un plugin o un tema que recibe muchas actualizaciones, puede resultar tedioso. Entonces yo recomiendo usar este plugin que entre las posibilidades que tiene es que se puede conectar con esta biblioteca, de hecho lo recomienda para plugins gratuitos y además añade un tipo de contenido personalizado a nuestra instalación de work. Yo tengo el plugin instalado ya en jordan-lares.local, aquí vamos un momento con plugins, aquí está, pero voy a la opción plugins que es lo mismo que hace clic aquí, plugins manager y voy a añadir un nuevo plugin, es decir, esto es como crear un nuevo repositorio. Entonces vamos a escribir aquí primero el nombre del plugin que es hola tío simón, que es look, que es hola tío simón, el nombre del autor, la descripción, que la descripción le puse fragmentos de las canciones de ese mundo, le voy a decir que el plugin es gratis y voy a añadir la url de el plugin, también voy a decir que está activo y lo añado. Ya con esto tendremos preparado el repositorio, sólo nos faltaría añadir los archivos sips para distribuir las versiones actualizadas, vamos a hacer clic aquí en gestionar sips, ahora añadir nuevo, seleccionamos el archivo, yo ya preparé la versión 1.2 del plugin para este propósito, está prueba, aquí seleccionamos la versión mínima necesaria y la última versión con la que se probó el plugin, dejamos esta opción activada y hacemos clic en subir y ya con esto tendríamos la última versión, la 1.2 preparada, sin embargo en la instalación del cliente el plugin actual debería tener esta url para que logre conectar con este repositorio y descargar la última versión del plugin, ahora vamos a abrir la web del cliente y busquemos el archivo principal del plugin hola tío simón, vamos a abrirlo y aquí tenemos resaltada la url del archivo JSON que usamos en la primera parte de la explicación, pero ahora vamos a usar la url que nos da o nos provee simba, lo que si vamos a quitarles esta s del protocolo HTTPS porque los certificados que tenemos instalados en estos servidores locales son autofirmados y por defecto devuelve un error, entonces para propósitos de prueba vamos a pasar por el HTTPS, guardemos acá y cerremos el editor del código para que no impida que el sitio del cliente actualice, vámonos a la opción de actualizaciones que se encuentra aquí en el escritorio y vamos a decirle que nos compruebe las actualizaciones, ah es que no hemos activado, vamos a activarlo, ok, vámonos acá actualizaciones, vamos a verificar efectivamente nos está agarrando la descripción de simba, no es la descripción del archivo JSON que editamos manualmente al principio, entonces bueno, vamos a seleccionar el plugin, vamos a decirle actualiza plugin y aquí nos actualizó, de hecho sirvemos los detalles, a ver que ahora la url es un poquito más compleja, de hecho pasa hasta unos datos de seguridad tipo nonce, vamos a hacer clic aquí en plugins y listo, ya dice que la opción 1.2 está instalada. En resumen usamos un plugin personalizado, la biblioteca plugin update checker que descargamos desde github, el plugin simba plugin updates manager que conseguimos gratis en el director de plugins de WordPress y nuestro alojamiento web para publicar las actualizaciones, estos serían los dos beneficios más importantes que obtienes al proveer actualizaciones en tus plugins y temas, el primero darle la opción a tus clientes de actualizar con un clic desde su escritorio y el segundo ahorrar horas y horas al mes actualizando tus plugins y temas, especialmente si usas herramientas de gestión como mainwp managewp o infinitewp, para finalizar con la ponencia quiero dar las gracias a la organización por darnos la oportunidad de participar a los WordPresseros de latinoamérica en este evento histórico, a los organizadores por apoyar estas iniciativas que benefician a todo el ecosistema de WordPress y a los espectadores que decidieron dedicar unos minutos para ver esta ponencia, gracias. Quedó atento a las preguntas y espero poder despejar sus dudas. Jordán, una pasada de ponencia, te tengo que decir, no sé si lo has podido ver, entiendo que estabas ahí atento a lo tuyo, pero tenías el chat parado, o sea en todo el día no he visto tal parón en el chat y es porque la gente estaba con los ojos como platos viendo tu ponencia, te doy la enhorabuena. Vamos a aprovechar para ver si hay algunas preguntas que tenemos por aquí, un segundito que las recopile porque hay un lío aquí en el chat, madre mía. De golpe y por razo se ha puesto a hablar toda la gente, gracias Jordán, gracias Jordán impresionante. Bueno, vamos con la primera pregunta, en este caso sería de Miguel Ángel, nos dice una duda, ¿tú a cuál loizas todos los plugins de tus clientes al mismo tiempo? No, de hecho suelo hacer todas las pruebas en local, especialmente de plugins tan delicados para ese tema de actualización como bucomers, por ejemplo, y eventualmente luego de hacer todas las pruebas, no solo de actualización, sino de que todos los procesos en la web funcionen correctamente, entonces ahí se hago la actualización en producción, pero normalmente no suelo actualizar plugins directamente, salvo plugins muy, muy, digamos, reconocidos a la invidad de código como por ejemplo contact form, 7, que casi nunca se rompe, al menos en mi experiencia, pero de resto no lo hago. Bueno, hay que tener siempre cuidado, más vale una copia de seguridad, que tenemos ahora también preguntas de ese tipo, pero vamos primero con la de Diego Pérez, nos pregunta, ¿recomiendas alguna idea o editor de código bueno? Bueno, realmente yo uso Visual Studio Code, hay muchos que son geniales, pero si recomendaría algunos sería ese, me parece que es el que está más al día en todo este tema de herramientas y actualizaciones, además por la ingente cantidad de extensiones que tiene, yo por ejemplo utilizo varias para PHP, CSS, minificación de código, tiene una genial que se llama Live Share, que permite conectarse con otra persona en cualquier parte del mundo y compartir la escritura del código en tiempo real. Yo tengo una migorita en Panamá, de hecho probablemente después de esta charla nos conectemos un rato y estamos trabajando en un plugin de un cliente y desde aquí de Venezuela yo me conecto con él y trabajamos en el mismo archivo al mismo tiempo mientras estamos en videoyamada, entonces es muy útil, esa sería mi recomendación. Bueno, Jordan, si te pedimos que estés un ratito en la sala de networking porque tienes a mucha gente esperándote allí para preguntarte, de acuerdo gente que no ha podido ver tu charla porque estaba viendo la otra y bueno, lo que sucede, cosas que de tener dos charlas a la vez interesantes. Bueno, vamos con otra pregunta, Joan Ricardo nos dice, si hacemos una actualización automática, antes de que se ejecute no deberíamos hacer una copia por si falla algo, por posibles incompatibilidades, entiendo que quería poner. Bueno, esa es la recomendación y las buenas prácticas siempre uno debe hacerlas, en ese caso sí, por supuesto que lo mejor es hacer una copia de seguridad del sitio siempre, cuando te voy a hacer actualización de plugins importantes, como por ejemplo podría ser de nuevo el ejemplo de bucomers y luego actualizar. No cuesta nada hacer una copia de seguridad aunque sea para tocar un código, no está de más ¿no? Vamos con otra pregunta que tenemos tiempo, Jordan, en este caso Miguel Fuentes nos pregunta, ¿se puede aplicar este método de actualizaciones a las versiones con licencia? Seguro y es muy buena esa pregunta porque esto está más pensado para plugins privados que usted no necesite ponerle una una licencia o para plugins gratuitos que usted quiera distribuir fuera del directorio de plugins de WordPress porque WordPress provee digamos la plataforma para usted compartir sus plugins gratuitos y lo que ocurre a veces es que nuestros plugins son muy particulares y a veces no cumplen con las directrices del directorio de plugins, entonces allí donde este método le puede servir, pero si su plugin está dentro de todas esas digamos las reglas de las directrices lo puede hacer así, pero en el caso de los plugins con licencia la misma gente del plugin ese que recomendé en la charla de Simba tiene una extensión que se llama bucomers conector, entonces viene interesante, ojo esa extensión es paga ¿no? No recuerdo muy bien cuánto cuesta pero son como 60 euros al año o algo así, entonces esa extensión permite conectar todo lo que es el proceso de venta de plugin con bucomers, se pueden gestionar las licencias, las actualizaciones, de hecho se puede añadir un módulo de suscripciones, entonces funciona muy bien, también hay otro método ¿no? que bueno la gente que utiliza digital don't know it, yo no lo utilizo pero sé que es muy bueno, ellos tienen también una extensión que se llama software licensing ¿no? como licenciamiento de software y es muy buena también, lo que pasa es que sea un poco más cosa o sea no, solo en un sitio cuesta 200 dólares al año, entonces bueno dependiendo no he conseguido una solución gratuita pero si usted tiene un poquito de habilidad con código pudiera añadir una extensión que conecte con este plugin esta librería gratuita y entonces gestionar el tema de las licencias. Qué interesante, la verdad es que sí. Otra pregunta, Miguel Colmenárez nos dice ¿es necesario que el repositorio del plugin o tema esté alojado en un servidor con SSL? No, no es necesario, claro es recomendado y a día de hoy pues una web que no tenga SSL estaría un poquito defasada de nuestra realidad pero no es necesario, de hecho ni siquiera es necesario que esté en WordPress, puede ser simplemente un espacio en internet en cualquier hosting compartido dedicado, o sea puede ser en Azure, en AWS, o sea realmente no hay límites, con que sea accesible públicamente es suficiente. Otra pregunta, que tenemos tiempo de DaniDeuDeu ¿aconseja siempre quitar las actualizaciones automáticas, Jordán? Sí, sí y es una pena que bueno no sé lo que pasa es que a lo mejor me van a dar por razo por esto que voy a decir pero no me parece buena idea que WordPress incorpore las actualizaciones automáticas de forma nativa por defecto y creo que en la versión 5.5 WordPress va a ocurrir eso entonces es delicado yo le recomiendo a todo el mundo que si activa esas actualizaciones automáticas cuando ya venga de fábrica con WordPress lo haga con plugins de reconocida reputación ¿no? Repito o sea yo lo haría por ejemplo con contact form 7 y con un par más que nunca me han dado problemas pero de resto la voy a desactivar en todas en todos los plugins importantes porque eso es muy delicado especialmente con plugins de comercio electrónico por ejemplo hay que echarle un ojo a este tema. Perfecto Jordán, la verdad que nos hemos quedado como hoyón de pregunta sin contestar Jordán querido oyente el que estás ahí detrás de la cámara estará en la sala de networking te animo a que pases por allí y seguir hablando con Jordán. Jordán muchísimas gracias vaya masterclass gracias. Según lo gracias a ustedes. Cuidados mucho saludo a Venezuela.