Pular a barra do clicRBS e ir direto para o cabeçalho.
 

Solução para erro feeds wordpress

27 de outubro de 2010 6
The following two tabs change content below.

Algumas instalações pessoais de wordpress podem apresentar erro na saída de feed. Em sua maioria estes erros são causados por existência de espaços em branco antes da declaração de XML que é o responsável pelo resultado quebrado.

Demonstração saída com erro:

Erro no processamento de XML: declaração xml ou de texto fora do início da entidade Posição: http://wp.clicrbs.com.br/xxxxx/feed/ Número da linha 4, coluna 1:

Isto significa que se antes do caractere < houver caracteres indesejados, estes precisam ser eliminados (também os espaços em branco) para que a saída tenha uma declaração limpa de XML.

< ?xml version=”1.0″ encoding=”UTF-8″?>

A solução mais simples é a alterar o arquivo de saída wp-includes/feed-rss2.php.

Abra com um editor de texto e localize o seguinte código:


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

Abaixo da linha $more = 1; adicione o código:

$out = ob_get_contents();
$out = str_replace(array(“\n”, “\r”, “\t”, ” “), “”, $input);
ob_end_clean();

Mas o que é e para que servem as 3 linhas?

Começando pelo básico, ob significa Output Buffer, que nada mais é do que o Buffer de saída.

Buffer á uma região da memória onde os dados ficam armazenados temporariamente até que sejam despejados para a aplicação.

Você deve ter se deparado com algum erro de Headers already sent. Isso se dá porque já foi enviada alguma saída para o navegador.
O ob_get_contents(), irá retornar o conteúdo do buffer.

str_replace(array(“\n”, “\r”, “\t”, ” “), “”, $input); irá remover todos os espaços em branco existentes;

ob_end_clean() irá limpar, esvazia o buffer e encerrá-lo.

Deu uma olhada agora e, lá está seu feed prontinho ;)

Comentários

comentários

Comentários (6)

  • jhon diz: 22 de dezembro de 2010

    PArabens….

  • Maria Julia diz: 18 de outubro de 2011

    Oi,
    caso alguem encontre problemas de sintaxe o código é esse

    $out = ob_get_contents();
    $out = str_replace(array(“\n”, “\r”, “\t”, ” “), “”, $input);
    ob_end_clean();

    muito bom o post parabéns!!!!!

  • Juca diz: 20 de junho de 2012

    Cara, valeu! isso meu ajudou aqui. Abraços.

  • Guilherme diz: 16 de agosto de 2012

    Obrigado, tentei um monte de coisas e essas três linhas salvaram minha noite.

  • Fabio Seixas Vaz diz: 14 de abril de 2013

    Obrigado por Postar pois da vez anterior que isso ocorreu tive muito trabalho para resolver.

    Para quem tiver problemas no Feed dos comentários também o arquivo é: feed-rss2-comments.php.

    É só alterar da mesma forma com o mesmo código após a linha 9.

  • Danillo Estrela diz: 21 de abril de 2013

    Meus parabéns, eu nunca ia imaginar que era um erro de buffer.

    Muito obrigado! Foi de utilidade fundamental para mim ^^

Envie seu Comentário