解决 WordPress Feed 显示错误

实在没想到一个Sitemap插件也能导致WordPress出现Feed错误。这不,昨天就碰到了这样的事情。打开FeedBurner上的Feed发现页面空空的,并提示说什么<?xml .......... ?>起始位置不在第一行。着实让我紧张了一番,还好后来问题解决了。

错误现象是这样的。打开FeedBurner上的Feed发现页面空空的,如果是IE,按提示查看详细信息,它会告诉你<?xml .......... ?>起始位置不在第一行,也就是这一行前面有空行;如果是Firefox,错误提示差不多;如果是Opera,会有这样的提示,但是它会提示你按照HTML格式解析,然后你就能看到xml文件的代码了。其实,如果在IE或者Firefox中打开错误,你用右键单击页面并“查看源代码”的话,是能看到与Opera中用HTML格式解析时看到的一样的东西。这说明WordPress的Feed输出是没有问题的,出问题的在于某个文件的格式。不幸的是却很难找到是哪个文件出了问题,我再也没有想到是一个插件导致了这样的问题。

W3官网上有针对这一问题的描述和解决方法指导,我给复制过来并翻译,见本文结尾。根据这个方案,我认为对于我们普通用户,检查的重点应该是插件,而不是文件代码,除非你在这之前修改过文件代码。因为如果本来没有问题而突然出现了这样的状况,那说明那些相关的代码不应该是有问题的,因为不管是WordPress文件、插件,还是主题,这都是经过检验的,一般不会出问题。所以,对于普通用户而不是程序员来说,应该先检查你最近启用的插件,排除之后再针对其它的几条进行检查。

Blank line before XML declaration (WordPress)
在XML声明前有空行(WordPress)

Explanation 解释

If an XML declaration (<?xml ... ?>) appears in your feed, it must be the first thing in the feed, before any whitespace.
如果一个XML声明(<?xml ... ?>) 出现在你的Feed文件中,它必须是该Feed文件中的第一个出现的,应该在任何空白(译者注,空格、空行)之前。

Unfortunately, with WordPress it seems all too easy for a plugin, a theme, or for your configuration file to contain a blank line. Further compounding this problem, some — but not all — feed readers compensate for this common error, allowing the error to go undetected for quite a while.
不幸的是,WordPress中的插件、主题、配置文件等却很容易带有空行。而且一些——但不是全部——Feed阅读器会修正这一常见错误,暂时允许这个错误不被检测而正常显示Feed,这使得这个问题变得复杂起来。(译者注,因为可能错误不是立即出现,你便不容易找到错误的根源所在。实际上我们应该也没有习惯总是阅读自己的Feed吧。这个我有体会,因为在我对FeedBurner进行一些设置之前,Feed一直是没有问题的,在Google Reader中可以正常收到更新。但是设置完了一更新,FeedBurner就提示说我的Feed源有问题。然后我直接打开WordPress的Feed页,就发现存在同样的错误提示。)

Solution 解决方法

  • PHP also uses a similar notation: <?php ... ?>. Note that the final php ?> should be omitted from all PHP code files—modules, includes, etc. The closing delimiter is optional in PHP (but not in XML), and removing it helps prevent unwanted white space at the end of files which can cause problems with your feeds.
    PHP文件也会使用一个类似的记号:<?php ... ?>。最好将最后的 php ?> 从所有的PHP代码文件,如modules, includes中扔掉。这个结束符号在PHP中可要可不要(但是在XML中却必须要有),去掉这个标记可以避免在文件结尾出现不希望出现的空白,对防止出现类似问题有帮助。
  • Check your wp-rss2.php and wp-atom.php files for blank lines outside of <? and ?> bracketed sections.
    检查你的 wp-rss2.phpwp-atom.php 文件,看看在 <??> 标记之外是不是有空行。
  • Check your wp-config.php file for blank lines outside of <? and ?> bracketed sections.
    检查你的 wp-config.php 文件看看在 <??> 标记之外是否有空行。
  • Check your theme’s functions.php file for blank lines outside of <? and ?> bracketed sections.
    检查你的主题中 functions.php 文件,看看在 <??> 标记之外是否有空行。
  • One by one, disable plugins and revalidate until you isolate the one causing the problem.
    一个一个的禁用插件并检查Feed是否出错,直到确定导致问题的那个插件。

转载请注明:来自不存在的空间, 作者lonelicloud©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/fix-wordpress-feed-error/>。转载请保留此信息及相应链接。

8 条关于 “解决 WordPress Feed 显示错误” 的评论

  1. 引用通告: 解决WordPress错误:Warning: Cannot modify header information | 忘川彼岸

  2. 你好站长,我的feed地址打开出问题。www.cndwzone.com/feed出现的页面不是订阅页面,麻烦你帮忙看看。谢谢了。

    • 跟文中描述的错误不同?一般WP本身没错,要么是模板,要么是插件导致的吧。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)