解決WordPress的RSS輸出錯誤問題

Wordpress

使用WordPress架站,本身有提供RSS自動輸出功能,透過它可以讓訪客訂閱網站最新文章,隨時追蹤網站最新動態。但有時我們可能裝個外掛、調整一下網站佈景主題或是做了小微調,結果造成網站RSS輸出的錯誤,通常遇到這樣的錯誤都不知從何解決?像香腸之前遇到了這樣的狀況,一度以為是外掛相衝,可是找了半天卻無收穫。

後來改查文章中是否有語法跟RSS相衝,造成輸出錯誤,可是也沒找到問題,後來逐漸轉向WordPress佈景主題,查看佈景主題是否有出錯,首先檢查編碼問題,接著查每一個檔案內是否有錯誤的語法或是有含BOM,不過都無斬獲。後來,無意間在functions.php這隻檔案內發現問題,結尾端因為有空行,所以造成RSS的輸出出錯。

其實RSS要找錯誤真的是不容易,一般來講我會先透過Feed Validator對自己網站的RSS先進行基本的檢測動作,看看分析後是哪邊出問題,通常這邊的分析是針對輸出的內容,所以標記有錯誤的地方通常是內文區域,但如果你將內文全部改成存文字,檢測後還是出問題,那不得不從網站的原始檔案開始查起了。

我遇到的錯誤訊息是:

This page contains the following errors:

error on line 2 at column 6: XML declaration allowed only at the start of the document

Below is a rendering of the page up to the first error.

一、檢查wp-config.php

rss_functions_1

WordPress的RSS輸出有時候會出錯,原因可能出在於系統設定檔案「wp-config.php」,編碼的問題、檔首有BOM標籤問題都可能讓RSS輸出錯誤。所以就先來檢查一下檔案吧!更改編碼以及BOM標籤可透過NotePad++來修改,點選【編碼】→【轉換至UTF-8碼格式(檔首不含BOM)】。如果檔案本身沒中文,可直接點【編譯成UTF-8(檔首不含BOM)】。

二、檢查佈景主題的編碼

rss_functions_6

如同第一部分,我們一樣需檢查佈景主題的編碼,一般國外載回來的佈景,編碼都是使用ANSII,如果遇到中文可能大家會另存成UTF-8,但卻忘了BOM標籤問題,所以我們一樣需要透過以上的方式,將佈景主題的編碼全部統一改成UTF-8(不含BOM標籤),再看RSS是否輸出正確?

三、檢查functions.php

rss_functions_7

眾裡尋它千百度,原來問題就在燈火闌珊處(亂引用)。後來發現問題是出在自訂義函式那隻PHP檔案「functions.php」,當然首先建議先將檔案調整成「UTF-8(不含BOM)」,接著將檔案拉到最底下看,有看出什麼端倪嗎?沒錯!就是多了兩行空白,結果造整個網站的RSS輸出錯誤!

rss_functions_4

解決方法1:刪除空白行
解決方法就是把最後的空行刪除掉,讓游標最多只能到「?>」後面而已。這樣就可以順將決RSS輸出的問題解決囉!

rss_functions_3

解決方法2:去除結尾
如果不想用上面的方法,其實也可以直接把「?>」去除,你後面不管空幾行都不會有問題,會發生這種問題主要是PHP解析時的問題。

rss_functions_5

四、問題解決囉!

當問題解決之後,我們可透過瀏覽器或RSS訂閱工具再次查看RSS頁面,看看是否正常輸出。通常問題大概是這樣子解決的,如果這樣無法解決,可能要看看你是不是曾經動到系統檔案了?把WordPress檔案丟回去覆蓋看看,並且切換到原始佈景主題,慢慢查起。

rss_functions_2

(轉自香腸炒魷魚)

Post a comment

 

Loading...