Pulsa ESC para cerrar

Curso WordpressCurso Wordpress

«XML declaration allowed only at the start of the document»: el error del sitemap que causa un espacio en blanco

Abres tudominio.cl/wp-sitemap.xml (o el mapa de tu plugin de SEO, o tu feed /feed/) y el navegador muestra:

This page contains the following errors:
error on line 2 at column 6: XML declaration allowed only at the start of the document

Qué significa

Un documento XML debe empezar exactamente con <?xml. Ni un espacio ni una línea en blanco antes. El error dice que en la línea 2 encontró la declaración, o sea, que la línea 1 tiene algo: normalmente un salto de línea vacío.

Ese salto lo imprime algún archivo PHP de tu sitio que tiene un espacio o una línea en blanco antes de <?php o después de ?>. WordPress carga ese archivo en cada petición, el espacio se envía primero, y el XML queda roto. En una página HTML no se nota; en un XML, sí.

Google Search Console también lo reporta como «No se pudo leer el sitemap» o «Sitemap con errores».

Dónde mirar primero

Si hiciste un cambio hace poco, empieza por ahí:

  1. El functions.php del tema (o del tema hijo), sobre todo si pegaste un snippet.
  2. Los mu-plugins y el plugin de snippets.
  3. wp-config.php.

Abre cada uno y comprueba que la primera línea empiece exactamente con <?php y que, si el archivo termina con ?>, no haya nada después.

En los archivos que son solo PHP, lo recomendado es no cerrar con ?> al final. Así es imposible que quede un espacio después.

Encontrar el archivo con comandos

Si no sabes qué archivo es, desde la carpeta del sitio:

Archivos que no empiezan con <?php

for f in wp-config.php $(find wp-content/themes wp-content/plugins wp-content/mu-plugins -name "*.php"); do
  [ "$(head -c 5 "$f")" != "<?php" ] && echo "$f"
done

Te dará una lista. Algunos archivos de plantilla de temas empiezan legítimamente con HTML; fíjate en los que empiezan con un espacio o una línea vacía. Para ver los primeros caracteres de uno sospechoso:

head -c 20 wp-content/themes/mi-tema/functions.php | od -c

Si ves \n o espacios antes de <, ese es el culpable.

Archivos con BOM

Algunos editores de texto en Windows agregan al inicio un carácter invisible llamado BOM. Para encontrarlos:

LC_ALL=C grep -rlI $'^\xEF\xBB\xBF' wp-config.php wp-content/themes wp-content/plugins wp-content/mu-plugins

Arreglarlo

  1. Abre el archivo en el editor del Administrador de archivos de cPanel o en un editor de código (como VS Code).
  2. Borra la línea vacía o el espacio antes de <?php, o lo que haya después del ?> final.
  3. Si es un BOM, guarda el archivo con la codificación UTF-8 sin BOM (en VS Code, abajo a la derecha, haz clic en la codificación y elige Guardar con codificación → UTF-8).
  4. Vacía la caché y vuelve a abrir el sitemap.

Si el archivo culpable es de un plugin o tema de terceros, no lo edites: se perderá con la próxima actualización. Avisa a quien lo desarrolla y, mientras, revisa si hay una versión nueva que ya lo corrige.

Después de arreglarlo

En Search Console → Sitemaps, vuelve a enviar el mapa del sitio para que Google lo lea de nuevo.

¿Los comandos no encontraron nada y el error sigue? Pega en el foro las primeras líneas del código fuente de tu sitemap y lo revisamos.