Soluções

Corrigindo o erro “XML declaration allowed only at the start…”

O erro ocorre ao tentar abrir o feed servido pelo Feedburner.
Anúncios Google

Alguns dias atrás tive um problema com o feed RSS aqui do site. Tentando descobrir como resolver, vi que o tal erro de XML é bastante comum, tendo causado dor de cabeça pra muita gente — e certamente causará a muitos outros. Como há muitos métodos espalhados pela internet, resolvi postar o que deu certo pra mim.

Na verdade, são três métodos, veja qual — ou quais — funciona para seu caso.

O “bug” é o seguinte: ao tentar abrir seu feed gerenciado via FeedBurner, ele se recusa a funcionar. Em vez do conteúdo do feed, o que você leva na cara é uma mensagem de erro:

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

Traduzindo:

Esta página contém os seguintes erros: erro na linha 2, coluna 6: declaração XML permitida apenas no início do documento.

Feed Feedburner XML error

Depois de algumas muitas pesquisas, várias soluções infalíveis que falharam e um bom tempo quebrando a cabeça, finalmente consegui resolver a encrenca.

Método 1: no código

Primeiro, saiba que o erro é causado por linhas em branco deixadas em certos arquivos de seu site. Pode ser em algum plugin, no functions.php, no feed-rss2.php, ou ainda (no meu caso) no wp-blog-header.php. Então, para ter certeza de onde está ocorrendo o problema:

  • Abra, no Bloco de Notas ou outro editor de texto puro (não use Word, vá de Bloco de Notas mesmo) o seu arquivo functions.php. Ele fica na pasta de instalação do site, dentro da pasta do tema. O caminho normal é /wp-contents/themes/seutema/functions.php). Veja se há linhas em branco no início ou fim, e se tiver, remova. Salve o arquivo e envie ao servidor. Atualize o site e visite seu feed.
    Se não entendeu “linhas brancas no fim ou início”, veja o gif mais adiante.
  • Não deu certo? Cheque no arquivo localizado em /wp-includes/feed-rss2.php se há linhas em branco também.
  • Por fim, tente no wp-blog-header.php, que fica na raíz do site.

Temos ainda a opção 2, por um plugin, veja a seguir.

Método 2: plugin

Se não quiser mexer nos arquivos, pode tentar o plugin Fix RSS Feed. Para instalá-lo, vá à opção do menu Plugins > Adicionar Novo, digite “Fix RSS Feed” e confirme a instalação

Fix RSS Feed plugin

Vá então à página de configuração (menu Configurações > Fix RSS Feed) e clique no botão “Fix wordpress rss feed error”. O plugin vai caçar linhas sobrando e eliminá-las automaticamente.

Clique no botão indicado para eliminar o erro do feed

O que vai acontecer é basicamente isso: linhas sobrando serão eliminadas. Veja como ficou meu arquivo antes e depois:

Linha em branco eliminada

Depois de reenviar os arquivos ao servidor (caso tenha feito a mudança manualmente), vá até a página do FeedBurner, na guia Troubleshootize, e clique em Resync Now (Ressincronizar). Volte ao seu feed e veja se resolveu. Isto pra mim foi suficiente.

Resync do Feedburner

Método alternativo

Seguindo as instruções deste tópico, você também deve tentar resolver inserindo esta porção de código no arquivo wp-includes/feed-rss2.php:

$out = ob_get_contents();
$out = str_replace(array("n", "r", "t", " "), "", $input);
ob_end_clean();

Deve ficar uma linha após o trecho que mostra:

header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
$more = 1;

Então fica assim:

header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
$more = 1;
$out = ob_get_contents();
$out = str_replace(array("n", "r", "t", " "), "", $input);
ob_end_clean();

Código do feed-rss2.php alterado

Isso aí remove qualquer linha ou espaços em branco, e havia resolvido para meus casos antes… Mas depois, por motivos que desconheço, deixou de funcionar, e tive que recorrer ao processo descrito antes.

Se nada der certo, desative os plugins um a um, testando para ver se o problema desaparece. Se der certo, foi o último plugin desativado o causador — provavelmente algum arquivo dele tem linhas sobrando, no início ou fim.

Seja como for, tenha paciência. Se conseguiu resolver a sua questão de um jeito diferente do mostrado aqui, comente e ajude outros colegas.

Author

Fundador do Tutoriart em 2010, é ex-instrutor de Photoshop, design web e gráfico. Em quase uma década de redação online, tem cerca de 1500 artigos publicados. Gerencia também o Memória BIT.

9 Comments

  1. DICA, para as pessoas que não conseguiram, se vc tiver com o site/blog em modo de manutenção em ON, e só desativa OFF.

    • É o feed do site de sua assinatura? Já está funcionando agora, espero que seja! Senão, vá desativando os plugins até isolar o problema.

  2. Deu certo.

    Agora nem sei ao certo o que resolveu realmente, mas me parece que foi a primeira alternativa, de remover todas as linhas em branco daqueles arquivos citados.

    Valeu!

    • Aê! Comigo aconteceu parecido, pois tinha esquecido de dar Resync no Feed, mas beleza, importante é funcionar.
      Abraço!

  3. Testei todas as suas dicas, nenhuma funcionou. Vou continuar procurando, mas valeu a sua tentativa, abraço!

    • Lamentável… tentou os métodos “alternativo” e o do plugins juntos?
      Seja como for, seu problema deve ser mesmo com as tais linhas em branco. Vá caçando até remover todas.

  4. Esse plugin Fix RSS Feed não funciona mais, com a versão atual do WordPress. Ficou obsoleto.

Write A Comment

Pin