🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo solucionar el error 'Cannot modify header information' en WordPress

Actualizado el 21 de mayo de 2026

¡Hola! Soy tu técnico de soporte amigable. Hoy vamos a desentrañar uno de los errores más comunes y, a la vez, más molestos que puedes encontrarte al gestionar un sitio en WordPress: el temido "Cannot modify header information". También conocido como el error de "headers already sent".

No te preocupes si ves esto en tu pantalla y sientes que el mundo se te viene encima. Es un problema muy habitual, especialmente cuando estás empezando. Lo bueno es que, en la mayoría de los casos, tiene una solución sencilla que no requiere ser un experto en programación. Vamos a ello.

¿Qué significa exactamente este error?

Imagina que tu sitio web es como un sobre que envías por correo. Primero, escribes la dirección y los datos del remitente (eso son los headers, o cabeceras). Luego, metes la carta (el contenido, como el texto, las imágenes, el HTML). Si intentas añadir algo a la dirección después de haber metido la carta en el sobre, el sistema postal se vuelve loco. Pues bien, en PHP (el lenguaje de WordPress) ocurre exactamente lo mismo.

El error "Cannot modify header information" aparece cuando tu sitio intenta enviar una cabecera (por ejemplo, para redirigir a otra página o para iniciar una sesión) después de que ya se ha comenzado a enviar el contenido (como un espacio en blanco, un echo, o una línea de HTML). El mensaje completo suele ser algo así:

Warning: Cannot modify header information - headers already sent by (output started at /ruta/a/tu/archivo.php:10) in /ruta/a/otro/archivo.php on line 5

[INFO] La parte más importante de este mensaje es la que dice "output started at". Ahí te está diciendo EXACTAMENTE dónde empezó el problema. Por ejemplo, si dice (output started at /wp-content/themes/tu-tema/functions.php:10), el error comenzó en la línea 10 de tu archivo functions.php.

¿Por qué ocurre? Causas más comunes

Antes de solucionarlo, es útil saber qué lo provoca. Las causas más frecuentes son:

  • Espacios en blanco o líneas vacías después de ?> (cierre de PHP): Este es el culpable número uno. Muchos archivos de WordPress (como wp-config.php o los de tu tema y plugins) tienen una etiqueta de cierre de PHP ?>. Si después de esa etiqueta hay un espacio, un salto de línea o cualquier carácter invisible, ese contenido se envía al navegador antes de que se puedan enviar las cabeceras.
  • Errores en archivos de funciones: El archivo functions.php de tu tema (o de un plugin) es muy sensible. Un simple echo, print, o incluso una línea de texto fuera de las etiquetas <?php ?> puede desencadenar el error.
  • Errores de codificación (BOM): Algunos editores de texto, como el Bloc de Notas de Windows (si no se usa correctamente), pueden añadir caracteres especiales invisibles al principio o final de un archivo. Esto rompe la estructura de PHP.
  • Conflictos entre plugins o temas: A veces, un plugin o un tema mal codificado intenta modificar las cabeceras en el momento equivocado.
  • Uso de funciones de redirección incorrectas: Si usas header('Location: ...') después de haber mostrado cualquier contenido en la página, obtendrás este error. En WordPress, es mejor usar wp_redirect() y asegurarse de llamarla antes de que se ejecute cualquier HTML.

Soluciones paso a paso para el error "headers already sent"

Vamos a ir de lo más simple a lo más complejo. Sigue estos pasos en orden.

Paso 1: Identifica el archivo y la línea exacta del error

Esto es clave. Mira el mensaje de error completo. Te dará la ruta exacta del archivo y el número de línea donde comenzó la salida de contenido. Por ejemplo: output started at /home/usuario/public_html/wp-config.php:1. Esto significa que el problema está en la primera línea de wp-config.php.

[TIP] Si no ves el error completo, puede que tu sitio esté en blanco. Activa el modo debug de WordPress añadiendo estas líneas a tu archivo wp-config.php (justo antes de la línea que dice "Eso es todo, ¡deja de editar!"):

define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', true);

Esto hará que los errores se muestren en pantalla.

Paso 2: Revisa el archivo señalado

Una vez que sabes el archivo, accede a tu servidor mediante FTP o el Administrador de Archivos de tu panel de hosting (por ejemplo, en Syspanel —recuerda acceder por el puerto 2106— busca la sección "Archivos").

Abre el archivo con un editor de texto limpio y seguro. Recomiendo encarecidamente usar un editor como Sublime Text, Notepad++ o Visual Studio Code. Evita el Bloc de Notas de Windows.

Paso 3: Busca espacios o líneas después del cierre de PHP ?>

Este es el paso más importante. Ve al final del archivo. Busca la etiqueta ?>. Si la encuentras, coloca el cursor justo después de ella. Pulsa la tecla Suprimir o Delete varias veces para asegurarte de que no hay ningún espacio, salto de línea o carácter oculto. El archivo debería terminar justo después de ?>, o, mejor aún, puedes eliminar completamente la etiqueta ?>. Sí, has leído bien. En PHP, la etiqueta de cierre al final de un archivo es opcional y es una buena práctica omitirla para evitar este problema exacto.

Ejemplo de archivo problemático:

<?php
// Código PHP válido
?>
[ESPACIO O SALTO DE LÍNEA AQUÍ]

Ejemplo de archivo corregido:

<?php
// Código PHP válido
// No hay etiqueta de cierre, el archivo termina aquí.

Paso 4: Revisa el principio del archivo

También puede haber un problema al principio del archivo. Asegúrate de que la primera línea del archivo sea exactamente <?php (sin espacios ni caracteres invisibles antes). Algunos editores añaden un "BOM" (Byte Order Mark) que es invisible pero problemático. Si usas Notepad++, puedes ir al menú "Codificación" y asegurarte de que esté en "Codificar en UTF-8 sin BOM".

Paso 5: Corrige el archivo wp-config.php

El archivo wp-config.php es un lugar muy común para este error. Ábrelo y revisa el principio y el final. A menudo, la gente añade espacios después de la última línea de configuración. Si ves la línea define('WP_DEBUG', false); y luego un espacio, bórralo.

Paso 6: Desactiva plugins y temas

Si el error persiste y no encuentras nada extraño en el archivo señalado, el problema puede ser un conflicto.

  1. Accede a tu panel de administración de WordPress (si puedes) o directamente a la base de datos. Si no puedes acceder al panel, renombra la carpeta wp-content/plugins a wp-content/plugins_old mediante FTP. Esto desactivará todos los plugins.
  2. Si el error desaparece, reactiva los plugins de uno en uno (renombrando la carpeta de nuevo a plugins) hasta encontrar el culpable.
  3. Haz lo mismo con tu tema. Temporalmente, activa un tema por defecto de WordPress (como Twenty Twenty-Four). Si el error se va, el problema está en tu tema.

Paso 7: Revisa archivos de funciones de tu tema

Si el error apunta a functions.php de tu tema, ábrelo con un editor de texto. Busca cualquier función que use header(), session_start(), setcookie() o wp_redirect().
Asegúrate de que estas funciones se llamen antes de cualquier salida de HTML. Por ejemplo, no deberías tener un echo o una línea de HTML antes de una redirección.

Ejemplo INCORRECTO:

<?php
// ... algo de código
?>
<p>Hola, mundo!</p>
<?php
header('Location: /otra-pagina/');
?>

Ejemplo CORRECTO:

<?php
header('Location: /otra-pagina/');
// ... resto del código
?>

Preguntas Frecuentes (FAQ)

P: ¿Puedo ignorar este error?
R: Rotundamente no. Aunque a veces el sitio parece funcionar, el error puede impedir que funcione correctamente la caché, las redirecciones, los inicios de sesión y los formularios. Además, da una mala imagen de profesionalidad.

P: ¿Es peligroso para la seguridad de mi web?
R: El error en sí no es un agujero de seguridad, pero puede ser un síntoma de que un archivo ha sido modificado incorrectamente o incluso infectado. Si ves este error después de una actualización o instalación de un plugin dudoso, revisa bien.

P: ¿Y si el error está en un plugin que no puedo desactivar?
R: Si es un plugin esencial, ponte en contacto con su desarrollador. Mientras tanto, puedes intentar editar directamente el archivo del plugin (siguiendo los pasos de este artículo), pero ten cuidado, ya que cualquier cambio se perderá al actualizar el plugin.

P: ¿Esto tiene que ver con mi hosting?
R: Generalmente no, aunque un hosting mal configurado (con errores de permisos o de compresión) puede a veces contribuir al problema. Sin embargo, en el 99% de los casos, es un problema de código en los archivos de WordPress. Si usas Syspanel (puerto 2106), puedes acceder fácilmente a los archivos y a la base de datos para hacer estas comprobaciones.

P: He seguido todos los pasos y el error sigue apareciendo. ¿Qué hago?
R: Respira hondo. A veces, el error está en un archivo muy anidado o en una función de un plugin muy complejo. Te recomiendo:

  1. Activar el modo debug como te expliqué en el Paso 1 para obtener un mensaje de error más detallado.
  2. Buscar en Google el mensaje de error exacto que te aparece, incluyendo el nombre del plugin o tema.
  3. Contactar con tu servicio de soporte técnico. Si tu hosting tiene soporte, ellos pueden echar un vistazo a los logs del servidor para encontrar el origen del problema.

Consejo final para evitar el error en el futuro

  • Usa siempre un buen editor de código (como Visual Studio Code o Sublime Text) y configúralo para que guarde los archivos en UTF-8 sin BOM.
  • Elimina la etiqueta de cierre ?> al final de todos los archivos PHP que solo contengan código PHP. Es una práctica segura y recomendada por el propio WordPress.
  • Realiza copias de seguridad antes de modificar cualquier archivo. Así, si algo sale mal, puedes restaurar la versión anterior.

Y eso es todo, amigo. Espero que este artículo te haya sido de gran ayuda. Recuerda que la paciencia es la clave. ¡Ánimo y a seguir construyendo tu web!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel