今天突然有個網友留言說博客的Feed掛了,症狀如下:
Chrome直接打開訂閱頁面顯示如下:
This page contains the following errors: error on line 1 at column 1: Document is empty Below is a rendering of the page up to the first error.
FeedDemon提示:此Feed包含錯誤。
添加後也沒什麼影響,能正常使用。
鮮果閱讀器也可閱讀,但是沒有獲取到最新的文章。
用IE試了下,顯示“文檔頂層存在無效內容。”
查看源代碼發現是能看到HTML格式解析後的內容,這說明WordPress的Feed輸出是沒有問題的,出問題的在於某個文件的格式。不過要找到是哪個文件出問題就比較難了。網上給出的解決方法大致都是這樣的:
檢測上、下是否有多余的回車、換行符號
1、檢測 wp-config.php 文件,查看PHP主體之外的代碼有無回車符;
2、同上,檢測 wp-rss2.php,wp-atom.php文件,如果最近沒修改過,可略過;
3、同上,檢測 functions.php 文件;
4、注意 feed是有緩存的,在修改完成之後,發一篇文章,使WP程序重建feed,從而查看效果;
5、若仍然有錯,可以嘗試暫時關閉所有插件,更換主題等逐個排除。
把上述文件都修改了個遍,還是沒有頭緒。。於是裝了個插件“Fix Rss Feeds”,啟用後修復一下就搞定了。而且修復之後把插件刪了也不會反彈~
研究了下這個插件,似乎只是修改了WordPress根目錄下的wp-blog-header.php,其實只需將這個文件改為:
<?php /** * Loads the WordPress environment and template. * * @package WordPress */ if ( !isset($wp_did_header) ) { $wp_did_header = true; ob_start(); //2010-09-18 gofunnow.com added, it will Fix rss feed error "Error on line 2: The processing instruction target matching "[xX][mM][lL]" is not allowed." while burn feed from feedburner.com require_once( dirname(__FILE__) . '/wp-load.php' ); ob_end_clean(); //2010-09-18 gofunnow.com added, it will Fix rss feed error "Error on line 2: The processing instruction target matching "[xX][mM][lL]" is not allowed." while burn feed from feedburner.com wp(); require_once( ABSPATH . WPINC . '/template-loader.php' ); } ?>
就可以了。