Lo que encontramos al heredar un WordPress abandonado por otra agencia

Hace cosa de dos meses nos llamó un cliente que llevaba tres años trabajando con otra agencia (no diré cuál, aunque me pica la lengua). La agencia había cerrado sin previo aviso — el dueño simplemente dejó de contestar emails — y el cliente se quedó con una tienda online que llevaba semanas fallando en el checkout. Nos pidió que la reviviéramos.
Primer problema: nadie tenía las credenciales del hosting. Ni el cliente, ni nosotros, y por lo visto tampoco nadie vivo. Tardamos cuatro días solo en recuperar el acceso al panel, entre tickets al proveedor y un intercambio de capturas de pantalla de facturas antiguas que demostraran que el dominio era suyo.
Cuando por fin entramos al servidor la cosa fue a peor. WordPress 5.4 (la versión actual entonces rondaba la 6.4), diecisiete plugins instalados de los que cuatro ya ni existían en el repositorio oficial, y un plugin de pagos que guardaba las claves de la pasarela en texto plano dentro de un archivo config-old.php que nadie había borrado. Encontramos también un wp-config.php.bak accesible por URL directa, sin protección alguna. Ese archivo llevaba ahí, a ojo, dos años.
Lo que más me molesta de estos casos no es el desastre técnico en sí, eso se arregla, cuesta dinero y tiempo, pero se arregla. Lo que me molesta es que el cliente pagó mantenimiento mensual durante tres años y nadie tocó nada de eso. Ni una actualización de seguridad. La factura decía “mantenimiento y soporte” y lo único que hacían, hasta donde pudimos ver en los logs de acceso, era responder algún ticket cuando algo se rompía de forma visible.
Migramos la tienda a un hosting nuevo, rehicimos el tema desde cero apoyándonos en el único plugin que sí merecía la pena conservar, y le dijimos al cliente algo que no siempre se dice en voz alta en este sector: un contrato de mantenimiento sin que él pueda ver qué se ha hecho no vale para nada. Ahora tiene un documento compartido donde apuntamos cada actualización, cada backup y cada incidente, con fecha y quién lo hizo. Le costó setecientos euros de más ese mes por la urgencia. Prefiere eso a otra sorpresa.
Y luego está la parte incómoda de cobrar por deshacer el trabajo de otro. Facturamos veintidós horas solo en la fase de “entender qué demonios hay aquí” antes de tocar una sola línea, y este cliente lo entendió, pero no siempre pasa así. Alguna vez nos ha tocado explicar que no, que no vamos a “simplemente arreglarlo” en dos horas cuando debajo hay una base de datos con tablas huérfanas de un plugin de hace cinco versiones y nadie sabe para qué servían.
No tengo una fórmula limpia para evitar esto del todo. Lo que sí hacemos ahora, cuando alguien nos pide asumir el mantenimiento de un proyecto que no montamos nosotros, es pedir acceso de solo lectura al hosting antes de dar precio, para hacernos una idea real del estado de la casa antes de comprometernos a nada. La mitad de las veces el cliente ni siquiera sabe cómo dárnoslo, y eso ya te dice bastante sobre quién llevaba las riendas hasta entonces.
¿Cuántas webs de pymes en España tendrán ahora mismo un wp-config.php.bak público esperando a que alguien las encuentre, y no precisamente para arreglarlas?