
¡Clásico “Ha habido un error crítico en esta web” de WordPress! 😅
Ese mensaje aparece cuando se produce un fatal error de PHP. Aquí tienes causas típicas y cómo arreglarlo, de más rápido a más profundo.
🔍Diagnóstico rápido (qué mirar primero)
- Correo de “modo de recuperación”: WordPress suele enviar un email al administrador con un enlace para entrar y desactivar el componente que falló.
- Logs de errores: mira
wp-content/debug.log(si existe), elerror_logdel hosting o el Visor de errores en cPanel/Plesk. Ahí verás la línea y el plugin/tema culpable.
🛠️ Soluciones express
1) Ver el error exacto
Activa el modo debug (temporalmente):
// en wp-config.php, antes de /* That's all, stop editing! */
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false); // así no muestras errores a visitantes
Luego reproduce el error y revisa wp-content/debug.log.
2) Conflicto de plugin/tema
- Desactivar plugins por FTP/gestor de archivos: renombra
wp-content/pluginsaplugins.off.- Si la web vuelve, el problema está en un plugin. Restaura el nombre y renombra uno a uno hasta encontrar el culpable.
- Cambiar de tema: renombra la carpeta del tema activo en
wp-content/themes. WordPress cargará un tema por defecto (Twenty Twenty-Four, etc.).
Con WP-CLI (si lo tienes):
wp plugin deactivate --allwp theme activate twentytwentyfour
3) Versión de PHP incompatible
- Asegúrate de usar una versión soportada por tu versión de WP (actualmente 8.1/8.2/8.3 suelen ir bien).
- En el panel del hosting cambia la versión de PHP e instala/extensiones necesarias (dom, curl, imagick, mbstring, intl, zip, json, mysqli, opcache).
4) Falta de memoria
Añade en wp-config.php:
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
Y, si puedes, súbelo también en php.ini/.user.ini:
memory_limit = 512M
max_execution_time = 120
5) .htaccess roto (en instalaciones Apache)
Restaura el .htaccess por defecto:
# WordPress estándar
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
6) Archivos de core corruptos
- Reinstala WordPress desde Escritorio → Actualizaciones → “Reinstalar ahora”,
o sube de nuevo todos los archivos de WP exceptowp-contentywp-config.php.
7) Problemas de base de datos
Activa la reparación:
define('WP_ALLOW_REPAIR', true);
Visita: /wp-admin/maint/repair.php y ejecuta “Repair Database”. Luego elimina esa constante.
8) Permisos de archivos
- Carpetas: 755
- Archivos: 644
wp-config.php: 400–440
9) Cachés y OPcache
- Vacía cachés de plugin (WP Rocket, LiteSpeed, etc.), Object Cache (Redis/Memcached) y OPcache desde el panel del hosting.
- Borra
wp-content/object-cache.phpsi quedó un “drop-in” corrupto.
10) Malware o código inyectado
Si el error persiste sin causa clara y el log muestra archivos raros en wp-content/uploads o PHP ofuscado, escanea (MalCare, Wordfence, herramientas del hosting) y limpia.
💡Casos típicos y pistas
- Actualicé un plugin/tema y rompió → vuelve a la versión anterior o espera parche; mientras, desactívalo.
- Migré de servidor → revisa versión de PHP, extensiones y permisos.
- White screen (pantalla en blanco) → casi siempre fatal error + caché: activa debug y limpia cachés.
- Constructor (Elementor/Divi) peta tras actualizar PHP → desactiva add-ons, actualiza a versiones compatibles, sube memoria.
✅ Orden recomendado (checklist)
- Activa
WP_DEBUG_LOGy revisadebug.log. - Renombra
plugins/para descartar conflicto → identifica el culpable. - Cambia al tema por defecto.
- Ajusta PHP (8.1–8.3) y memoria.
- Restaura
.htaccessy limpia cachés. - Reinstala core.
- Repara la base de datos y revisa permisos.
Si quieres, busca el error exacto del debug.log o del email de modo recuperación y puedes encontrar la solución precisa en dos minutos.