Error fatal de WP Rocket en WordPress 7.1
Tu web ha dejado de cargar tras actualizar a WordPress 7.1: esto es lo que ha pasado
Pocas cosas dan tanto vértigo como pulsar «Actualizar» y ver cómo tu web se queda en blanco. Si acabas de pasar tu sitio a WordPress 7.1 y de repente no carga ni la portada ni el escritorio, respira: probablemente no has roto nada tú. Hay un conflicto conocido entre WordPress 7.1 y las versiones antiguas de WP Rocket, y el propio equipo del plugin ya lo ha reconocido y corregido.
La buena noticia es que tiene arreglo y no vas a perder ni una sola entrada. La mala es que, si el error te ha dejado fuera del administrador, tendrás que ensuciarte un poco las manos con el FTP. En este artículo te cuento qué está fallando exactamente, a qué versiones afecta y las cuatro formas de solucionarlo, desde la más cómoda hasta la de emergencia.
¿Cuál es el mensaje de error exacto?
Dependiendo de cómo tengas configurado el debug de WordPress, verás una pantalla en blanco, el clásico «Se ha producido un error crítico en esta web» o directamente el error en pantalla. Si te asomas al registro de errores de tu hosting, el mensaje es este:
PHP Fatal error: Uncaught TypeError: substr(): Argument #1 ($string) must be of type string, int given
En algunos servidores lo verás con una redacción algo distinta, del tipo Uncaught TypeError: substr() expects parameter 1 to be string, int given, pero el problema es el mismo. Y lo importante es el fichero que lo provoca:
/wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/CDN/Cloudflare.php:562
Esa ruta es la que te confirma que el culpable es WP Rocket y, más concretamente, su integración con Cloudflare. Si el error que ves apunta a otro plugin o a tu tema, entonces lo que te está pasando es otra cosa y este artículo no te va a servir de mucho.
¿A qué versiones afecta?
El fallo aparece cuando se juntan estos dos ingredientes:
- WordPress 7.1
- WP Rocket en cualquier versión anterior a la 3.23.2.2
WP Rocket corrigió el problema en la versión 3.23.2.2. Es decir: si actualizas el plugin a esa versión o superior, el error desaparece. Si sigues en WordPress 6.x, no te va a pasar nada de esto por ahora, pero te interesa actualizar WP Rocket antes de dar el salto al core.
Conviene aclarar que no es un fallo que afecte a todo el mundo por igual: se dispara en la integración de Cloudflare, así que los sitios que la tienen activa son los que se llevan la peor parte. Aun así, la recomendación es la misma para todos, uses Cloudflare o no.
¿Por qué se produce este error fatal?
Sin entrar en tecnicismos innecesarios: en la línea 562 de ese fichero, WP Rocket recorre un listado de opciones de Cloudflare y pasa cada clave a la función substr() de PHP, dando por hecho que siempre va a ser una cadena de texto. El problema es que, en determinadas configuraciones, una de esas claves llega como número entero.
Las versiones antiguas de PHP eran indulgentes y convertían el número a texto sin rechistar. Las modernas, no: lanzan un TypeError y cortan por lo sano. Y como esto ocurre mientras WordPress está cargando los plugins, el error tumba absolutamente todo — la portada y el escritorio a la vez. De ahí que no puedas ni entrar a desactivar el plugin por las buenas.
¿Cómo solucionar el error fatal de WP Rocket?
Hay cuatro caminos. Elige según si todavía tienes acceso a tu escritorio de WordPress o te has quedado fuera. Antes de tocar nada, si puedes, haz una copia de seguridad: cuesta cinco minutos y te ahorra disgustos.
Si todavía puedes entrar al escritorio
Es el escenario cómodo. Los pasos oficiales son:
- Desactiva WP Rocket desde el listado de plugins.
- Instala y activa el plugin de ayuda WP Rocket Update Notification Recovery.
- Si te aparece el botón «Restore folder name», púlsalo: sirve para devolver a la carpeta del plugin su nombre original.
- Pulsa «Check Available Updates Now» para forzar la comprobación de actualizaciones.
- Actualiza WP Rocket a la versión 3.23.2.2.
- Elimina el plugin de ayuda: ya no lo necesitas.
Con esto tu web debería volver a la normalidad de inmediato. Vacía la caché después, tanto la de WP Rocket como la de Cloudflare si la usas.
Si has perdido el acceso al administrador
Aquí toca FTP o el gestor de archivos de tu panel de hosting. El truco de toda la vida: si WordPress no encuentra la carpeta de un plugin, lo desactiva solo.
- Conéctate por FTP y ve a
/wp-content/plugins/. - Renombra la carpeta
wp-rocketawp-rocket-off. - Entra a tu escritorio de WordPress: ya debería cargar con normalidad.
- Vuelve a renombrar la carpeta a
wp-rocket. - Sigue los pasos del apartado anterior para actualizar a la 3.23.2.2.
No borres la carpeta, solo renómbrala. Si la eliminas perderás la configuración del plugin y tendrás que dejarlo todo a punto otra vez.
Parche manual en el código
Si te manejas editando ficheros y necesitas que la web vuelva a estar en pie ya mismo, puedes corregir la línea directamente. Abre /wp-content/plugins/wp-rocket/inc/ThirdParty/Plugins/CDN/Cloudflare.php, ve a la línea 562 y déjala así:
if ( ! is_string( $key ) ) {
Es un parche de urgencia, no una solución. En cuanto WP Rocket se actualice, el fichero se sobrescribe y tu cambio desaparece — lo cual, en este caso concreto, tampoco es un drama, porque la actualización trae el arreglo definitivo. Pero tenlo presente: editar a mano los ficheros de un plugin nunca debería ser tu plan A.
Fichero de rescate en la carpeta mu-plugins
La cuarta vía es la más elegante de las de emergencia. WP Rocket ha publicado un fichero llamado wp-rocket-cloudflare-intkey-fix.php que corrige el comportamiento sin tocar el plugin:
- Descarga el fichero desde la documentación oficial de WP Rocket.
- Súbelo a
/wp-content/mu-plugins/. Si esa carpeta no existe, créala. - No hay que activarlo: los must-use plugins se cargan solos.
- Cuando ya hayas actualizado a la 3.23.2.2, bórralo.
Puedes consultar todos los detalles y descargar el fichero en la documentación oficial de WP Rocket sobre este error.
¿Cómo evitar que te vuelva a pasar?
Este episodio es un recordatorio incómodo pero útil: una actualización del core puede llevarse por delante tu web si los plugins no han llegado a tiempo. Y no, la culpa no es de WordPress ni de WP Rocket — es de cómo gestionamos las actualizaciones.
Cuatro costumbres que te van a ahorrar más de un susto:
- Ten un entorno de staging. Una copia de tu web donde probar la actualización antes de tocar la de verdad. Casi todos los hostings decentes lo ofrecen con un par de clics.
- Haz copias de seguridad automáticas. Si algo sale mal, restaurar es cuestión de minutos en lugar de una tarde entera. Te hablo de ello en el artículo sobre los mejores plugins de WordPress.
- Actualiza primero los plugins y después el core. Los desarrolladores suelen sacar versiones compatibles antes de que la nueva versión de WordPress sea mayoritaria.
- No actualices el core el día del lanzamiento. Deja pasar una o dos semanas. Que los conejillos de indias sean otros.
Y si todo esto te suena a chino o sencillamente no quieres estar pendiente, para eso está nuestro servicio de mantenimiento de WordPress: nos ocupamos de las actualizaciones, las copias de seguridad y de que estas cosas se detecten antes de que tumben tu web. Mientras tanto, puedes seguir leyendo más artículos en el blog de WordPress.