WordPress Feed 輸出異常常見症狀:Chrome 顯示「Document is empty」、IE 提示「文檔頂層存在無效內容」、Feed 閱讀器報錯。實際上 WordPress 核心輸出正常,問題多在某個 PHP 檔案輸出了 BOM、空白字符或換行符導致 XML 聲明前有輸出。
This page contains the following errors:
error on line 1 at column 1: Document is empty
或 IE:文檔頂層存在無效內容
wp-config.php:?> 之後不可有任何空白/換行(建議刪除結尾 ?>)functions.php(主題與外掛):同理,結尾勿留空白wp-rss2.php、wp-atom.php 核心檔(近期未動可略過)安裝啟用「Fix RSS Feeds」外掛,點擊修復按鈕即可解決。更神奇的是刪除外掛後不反彈,說明它修改了核心檔案而非掛載過濾器。
外掛實際將根目錄 wp-blog-header.php 替換為帶輸出緩衝版本:
<?php
/**
* Loads the WordPress environment and template.
* @package WordPress
*/
if (!isset($wp_did_header)) {
$wp_did_header = true;
ob_start(); // 開啟輸出緩衝,捕獲前面的雜訊
require_once(dirname(__FILE__) . '/wp-load.php');
ob_end_clean(); // 清空緩衝,確保 XML 聲明在最開頭
wp();
require_once(ABSPATH . WPINC . '/template-loader.php');
}
?>
| 函數 | 作用 |
|---|---|
| ob_start() | 開啟輸出緩衝,攔截 wp-load.php 載入過程中所有輸出(BOM、空白、錯誤訊息) |
| ob_end_clean() | 丟棄緩衝區內容並關閉緩衝,確保後續 wp() 輸出的 Feed XML 乾淨無前綴 |