WPM User Sync: Solución #freesoftware para WordPress

WPM User Sync: Solución #freesoftware para WordPress
<span class="bsf-rt-reading-time"><span class="bsf-rt-display-label" prefix="Tiempo de Lectura"></span> <span class="bsf-rt-display-time" reading_time="5"></span> <span class="bsf-rt-display-postfix" postfix="minutos"></span></span><!-- .bsf-rt-reading-time -->

Estoy muy feliz de anunciar el lanzamiento de la solución de sincronización de identidades que desarrollé para WordPress, y específicamente para instalaciones multisitio. “WPM User Sync” es un complemento completamente gratuito que podrás descargar del directorio oficial del CMS, y en esta publicación te cuento que problema soluciona, cómo conseguirlo y mi experiencia en el proceso.

Historia de WPM User Sync

En marzo de 2020, comencé un nuevo proyecto con Ivana Tilca llamado “ConoSur.tech“. Este proyecto tiene un sitio web, que es una instancia multisitio de WordPress con varios micrositios en su interior. Utiliza el método SUBDOMAIN_INSTALL, eso significa que “cada sitio en su red será un subdominio”.

Uno de los requisitos más importantes fue: DEBEMOS brindar a nuestros usuarios registrados experiencia de inicio de sesión único en todos los micrositios presentes y futuros. Aquí encontramos un gran problema: la experiencia lista para usar de WordPress no sincroniza a los usuarios entre sitios (ni para existentes ni para futuros).

Después de buscar algunos complementos en el directorio de WordPress, encontramos algunos de ellos con precios muy altos. Por esta razón, decidí comenzar un nuevo desarrollo de solución para resolver este problema por mí mismo. Aquí tienes WPM User Sync :-).

Ahora si: ¿qué es WPM User Sync?

WPM User Sync es un complemento que permite la sincronización del usuario en su WordPress Multisite, que es un tipo de instalación de WordPress que le permite crear y administrar una red de múltiples sitios web desde un único panel de WordPress.

WPM User Sync WordPress plugin

Conceptos clave:

  • WPM User Sync es un complemento (plugin), no una característica central de WordPress. Fue construido por desarrolladores externos para WordPress. Sin embargo, pasa por un proceso de prueba detallado para garantizar un funcionamiento sin problemas a medida que interactúa con los aspectos centrales del CMS.
  • En la configuración multisitio de WordPress lista para usar, cuando crea un nuevo usuario nunca se sincroniza con otros sitios en su red. Además, cuando creas un nuevo sitio en su red, no hay usuarios sincronizados con este nuevo sitio. Esto significa que debe registrar o asociar usuarios manualmente a su sitio, o su nuevo sitio con sus usuarios. Este es un proceso tedioso y manual que muchas veces uno busca evitar.
  • WPM User Sync te brinda la posibilidad de automatizar todos estos escenarios:
    • Cuando crea un nuevo usuario, este usuario puede sincronizarse con todos los sitios existentes en su red;
    • Cuando crea un nuevo sitio, todos los usuarios pueden sincronizarse automáticamente con él;
    • Cuando cambiamos un rol de usuario en un sitio, puede configurarlo para replicar este cambio en todos los sitios de su red;
    • Si no desea la automatización, con este complemento puede hacer todas las cosas anteriores en modo manual :-).
  • Por último, pero no menos importante, cuando hablamos de “sincronización de usuarios”, nunca duplicamos los datos del usuario. El usuario es solo uno, y la misma identidad es la que se agrega a los sitios en un modelo de referencia. Si está utilizando la opción “SUBDOMAIN_INSTALL” (es decir, cada sitio en su red será un subdominio) y deseas “experiencia de inicio de sesión único”, debe configurar algunos aspectos de cookies en su WP-CONFIG.

Mi experiencia durante el desarrollo

La tecnología es mi pasión, trabajo y pasatiempo :-). Esto incluye desarrollar Infraestructura, desarrollar Software e inclusive consumirla (como hacemos la gran mayoría de nosotros).

Con respecto al desarrollo en PHP, y específicamente de complementos de WordPress, mi experiencia fue muy buena. Hasta el momento, desarrollé dos plugins:

El proceso no es complejo, pero requiere de práctica y constancia de acuerdo a la complejidad de plugin que generemos. En mi caso, WPM User Sync es un plugin de complejidad intermedia, que interactúa con varias APIs core de WordPress, y que requirió analizar funcionalmente qué quiero solucionar a los usuarios, y cuál es la manera más simple de hacerlo. Para ello transité el siguiente proceso:

  1. Como usuario, identifiqué la necesidad que no estaba cubierta out-of-the-box por la plataforma WordPress.
  2. Generé una pruebas de concepto, funcional, que me permitió hacer un onboarding sobre la solución pensada y entender cuánta complejidad y tiempo me iba a llevar interactuar con APIs core.
  3. Una vez identificado el tiempo estimado y complejidad, puse todo el foco en diseñar la arquitectura base de mi solución, contemplando:
    • Módulos y submódulos.
    • Decisiones de logging & auditoría.
    • Decisiones de seguridad.
    • Manejo y control de errores.
    • Decisiones de Usabilidad y de Look & Feel.
    • Definciones de grabación de datos en la base de datos.
    • Triggers y Funciones.
  4. Comencé con iteraciones, muy pequeñas en tiempo (según mi disponibilidad, jornadas de trabajo de aprox 3 horas cada una algunos días por semana), con el objetivo de tener al cierre de cada una un entregable tangible.
    • Esto es un gran ejercicio que les recomiendo hacer, ya sea para tareas que ustedes están llevando adelante e incluso objetivos del equipo de trabajo.
    • Es importante que al cierre de cada jornada o conjunto de jornadas haya entregables funcionales, quizás no tan completos técnicamente, pero si funcionales y cerrados.
  5. Para realizar las pruebas monté dos entornos propios en puertotec.com (iniciativa de alojamiento gratuito para toda acción sin ánimos de lucro que exista en el planeta y que necesite recursos informáticos):
    • Un ambiente con un WordPress multisite, con sitios de prueba dentro, que me permitió entender si las pruebas funcionales eran exitosas.
    • Un ambiente con un WordPress con instalación “single site”. Ustedes se preguntarán: ¿por qué una instalación single-site si el plugin es para instalaciones multisite? La respuest es muy simple: porque el plugin debe poder identificar esto, y negar la activación (dado que no hay usuarios para sincronizar en el ambiente).
  6. Me llevó 11 iteraciones de aproximadamente 3 horas cumplir con todos los requerimientos funcionales. Cuando este momento llegó, realicé la postulación de mi software al directorio oficial de WordPress.
  7. Recibí de WordPress 3 observaciones, que me pidieron corregir, relacionadas con sanitizar entradas de formulario (a través de métodos estándares que no conocía de la plataforma) y cambiar el nombre de una función, que no era único en el directorio de plugins (y esto trae problemas de compatibilidad con otros plugins en caso que estén instalados junto al mío).
  8. Luego de corregir estas 3 observaciones, el plugin fue aprobado. ¡Feliz!

¿Puedo contribuir?

¡Si! Simplemente bifurca este repositorio, mejora el código y envía un PR para revisar ?. Repo: https://github.com/pablodiloreto/wpm-user-sync

Si desea proponer una nueva función o informar un error -> https://github.com/pablodiloreto/wpm-user-sync/issues

Espero que esta publicación te sirva para conocer mi experiencia, probar mi plugin y proponer nuevas mejoras. ¡Hasta la próxima!

0 0 votes
Article Rating

Professor. Techie. Ice cream fan (dulce de leche). My favorite phrase: "Todos los días pueden no ser buenos ... pero hay algo bueno en todos los días". Currently I´m Engineering Manager at MODO (https://modo.com.ar), the payment solution that allows you to connect your money and your world to simplify everyday life. Modo is a payment solution in which you can send, order and pay from your mobile device in the safest, most practical and convenient way. I enjoy a lot of educational, technological talks and a good beer. If you want to talk, write me to pablodiloreto@hotmail.com.

Subscribe
Notify of
guest

1 Comment
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Geoff Jennings
February 8, 2021 9:46 AM

Great plugin!
Application worked perfectly across my wp5.6 multisite. I would like to know if you intend to add the ability to sync user deletion? Currently, if a user is deleted from the system you have to manually delete the user from each subsite.
Thanks again and great job!