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.
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
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.
O que vai acontecer é basicamente isso: linhas sobrando serão eliminadas. Veja como ficou meu arquivo antes e depois:
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.
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();
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.
10 Comments
aqui funcionou o meu foi no function.php
Funcionou comigo, obrigado!
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.
Valeu! mas não funcionou. Vou continuar tentando.
É o feed do site de sua assinatura? Já está funcionando agora, espero que seja! Senão, vá desativando os plugins até isolar o problema.
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!
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.
Esse plugin Fix RSS Feed não funciona mais, com a versão atual do WordPress. Ficou obsoleto.