Activación, desactivación y uninstall: ciclo de vida sin sustos en producción
Implementas correctamente el ciclo de vida del plugin para crear opciones iniciales, programar tareas, desactivar sin dejar procesos vivos y desinstalar con limpieza controlada.
Muchos plugins funcionan en local pero generan problemas en vida real porque no controlan bien su ciclo de vida.
Activar no es solo "encender" el plugin: aquí debes crear estado inicial seguro, validar requisitos y dejar todo preparado para operar.
Desactivar tampoco es borrar datos sin más: normalmente se paran procesos (cron, colas, cachés), pero la configuración se conserva.
La desinstalación sí es el momento de limpieza profunda, siempre respetando qué espera el cliente: borrar todo o conservar datos.
- Separar responsabilidades evita pérdidas de datos y efectos secundarios.
- En activación: validas versión mínima de PHP/WordPress, defines opciones por defecto y, si aplica, registras eventos periódicos.
- En desactivación: limpias tareas en segundo plano (como cron) y transitorios efímeros, pero normalmente conservas ajustes de usuario.
- En uninstall: eliminas opciones/tablas según política de borrado definida por el proyecto.
- Activación: preparar entorno y defaults.
Qué debe pasar en cada fase del ciclo de vida
Separar responsabilidades evita pérdidas de datos y efectos secundarios.
En activación: validas versión mínima de PHP/WordPress, defines opciones por defecto y, si aplica, registras eventos periódicos.
En desactivación: limpias tareas en segundo plano (como cron) y transitorios efímeros, pero normalmente conservas ajustes de usuario.
En uninstall: eliminas opciones/tablas según política de borrado definida por el proyecto.
- Activación: preparar entorno y defaults.
- Desactivación: detener procesos y dejar sitio estable.
- Uninstall: limpieza final explícita y controlada.
Activación segura: requisitos, defaults y esquema
La activación debe fallar rápido si el entorno no cumple requisitos.
Antes de crear nada, comprueba requisitos mínimos. Si no se cumplen, desactiva automáticamente y muestra mensaje claro al admin.
Define defaults de configuración con `add_option` para no sobreescribir valores existentes en reactivaciones.
Guarda una versión de esquema (`wpac_db_version`) para futuras migraciones controladas.
Desactivación vs uninstall: no son lo mismo
Confundirlas es un error clásico que provoca pérdida de datos.
Un cliente puede desactivar temporalmente tu plugin para pruebas. Si borras sus datos en ese momento, rompes confianza y operación.
La desactivación debe centrarse en parar tareas activas: desregistrar cron, vaciar cache temporal y dejar el sistema limpio.
La desinstalación (`uninstall.php`) sí puede borrar opciones/tablas, idealmente respetando una opción de "conservar datos".
Caso real: plugin con cron huérfano en producción
Si no limpias eventos al desactivar, el sitio puede seguir ejecutando trabajo fantasma.
En un proyecto editorial, un plugin dejó un evento `wp_cron` activo tras desactivarse. El evento seguía intentando procesar datos inexistentes y llenó logs con errores durante semanas.
El problema no estaba en el feature, sino en ciclo de vida mal cerrado.
Con una limpieza correcta en desactivación (`wp_clear_scheduled_hook`) y versionado de esquema en activación, el equipo eliminó incidentes recurrentes.