functions.php se ejecuta en muchas peticiones, por lo que sirve para redirecciones, usuarios ocultos e inyección de scripts. También contiene configuración legítima y personalizaciones. Reemplazarlo sin revisar puede borrar funciones importantes y dejar intacto el acceso del atacante.
Conserva, compara y aísla el bloque sospechoso antes de reconstruir el tema fiable.
Registra el contexto del tema
Anota tema padre e hijo activos, versiones, fuente y ediciones directas conocidas. Guarda directorios completos y base antes de cambiar código.
Calcula el hash del archivo sospechoso y conserva su fecha. Revisa si el editor, SFTP o historial de despliegue explican el cambio.
No abras el archivo mediante una URL pública ni ejecutes fragmentos copiados.
Compara con un paquete fiable
Obtén la versión exacta del tema padre desde su fuente oficial y compara sin conexión:
diff -ruN clean-theme/ installed-theme-copy/
Revisa cada diferencia. Un tema hijo debe diferir; un tema comercial puede incluir archivos generados o licenciados ausentes de una muestra pública.
Clasifica las diferencias por origen: paquete del proveedor, tema hijo, personalización aprobada o cambio inexplicado. Relaciona cada personalización con una función visible y un propietario. Un bloque sin responsable, especialmente si apareció fuera de un despliegue, debe permanecer aislado hasta entenderse.
No sustituyas por otra versión mayor durante el análisis: los cambios de compatibilidad ocultarían el alcance.
Identifica cómo se invoca el código
Examina hooks y condiciones. ¿Se ejecuta siempre, solo para desconectados, con un referrer o dentro del administrador?
Rastrea dominios, escrituras, cambios en base e includes dinámicos sin ejecutarlos. Busca cadenas distintivas en la copia en cuarentena.
El texto codificado no es el hallazgo completo. Determina mediante análisis estático aislado qué haría su lógica.
Separa las personalizaciones legítimas
Lista tipos de contenido, hooks de WooCommerce, shortcodes, enqueues e integraciones. Tras revisar, mueve el código propio a un tema hijo o pequeño plugin del sitio cuando corresponda.
No pegues el archivo antiguo entero en un tema limpio: transferirías el bloque malicioso y una mala práctica de mantenimiento.
Prueba cada personalización con la versión actual de WordPress y PHP.
Comprueba dependencias antes de moverla: prioridad del hook, carga de traducciones, clases del tema y plantillas de WooCommerce. Una migración aparentemente correcta puede ejecutarse dos veces si el código continúa tanto en el tema hijo como en el nuevo plugin.
Reconstruye el tema desde fuentes fiables
En staging o mantenimiento, elimina el directorio comprometido e instala el paquete verificado. Restaura únicamente archivos del tema hijo revisados.
Usa una versión parcheada y mantenida tras probar compatibilidad. Un tema abandonado e infectado no es una solución duradera.
Vacía cachés de página y opcode mediante controles admitidos. Si un worker mantiene bytecode antiguo, la salida puede seguir infectada aunque el disco esté limpio. Sigue el procedimiento del hosting; no reinicies servidores sin autorización.
Averigua cómo se modificó
Revisa administradores, contraseñas de aplicación, editor del tema, SFTP, panel y claves de despliegue. Busca plugins vulnerables y webs vecinas.
Investiga cron o puertas traseras que reescriban functions.php y monitoriza durante el intervalo anterior de recurrencia.
Desactivar el editor reduce una ruta, pero no protege credenciales SFTP o de hosting robadas.
Verifica frontal y negocio
Inspecciona HTML público buscando el script o redirección anterior. Prueba usuarios desconectados, referrer, navegación, formularios, idiomas y flujos sandbox de WooCommerce autorizados.
Confirma que el hash permanece estable después de cron y regeneración de caché.
Realiza una prueba con el tema limpio en staging antes del cambio final y registra errores PHP y JavaScript. Después del despliegue, compara el hash servido en todos los nodos; un servidor atrasado o artefacto antiguo puede volver a publicar la copia infectada.
Cuándo es más segura una limpieza profesional
Solicita ayuda si hay mucha personalización sin documentar, el archivo vuelve a cambiar o toca checkout. Envía tema, versión y ubicación sospechosa como texto, nunca credenciales o ejecutables.
La reparación debe conservar el comportamiento legítimo, reconstruir la confianza en el tema y cerrar la ruta que lo modificó.