忙了幾天,暈頭轉向,有幾天都要弄到凌晨兩點才願意去睡,明明已經超困了,但是看到那些該死的問題和錯誤,我實在是放不下心去睡覺啊。各位別介意,忍不住發幾句牢騷,馬上轉入正題吧。這幾天讓我困擾的東西就是 WordPress 這部落格神器了。我以前寫過 WordPress 相關的文章,但不深入,只是比較淺顯的東西,因為那個時候我研究比較多的是 dedecms,現在我就給大家總結一下我這幾天碰到的一些問題和解決方法。
搭建伺服器、安裝 WordPress 之類的基礎東西我就不再重複贅述了,大家可以看看之前寫的文章,叫 《身為站長的我分享給新人的一些經驗》 。今天我要講的東西是比之前深入一點的,可能大家已經碰到或者以後將會碰到的問題。
1 、主題模板問題
相信 99% 的站長使用 WordPress 必定是用模板的,而不是自己開發的,因為 WordPress 身為國外最知名的 cms,擁有無數的粉絲和使用者者,自然資源群是非常龐大的,各類外掛和主題數不勝數,在國內也漸漸變得十分的流行。不過很重要的一點是,許多模板都是抄襲後稍作修改的盜版作品,這類作品最大的缺陷是,一次性。何為一次性呢?
就是隻有一個版本,不再更新,因為它是抄襲的,完全沒必要跟著原版去更新。這類主題因為長期不更新,很容易存在 bug,大家可以開啟 wp_config.php 這個 WordPress 配置檔案,找到裡面的一行程式碼,叫 define('WP_DEBUG', false),把其中的 false 引數改成 true 。這個是主題開發者常用的功能,開啟後,登陸 WordPress,會出現 debug 反饋,你可以看看你的主題檔案是否有問題。通常問題都出在 xxx_options.php 這個檔案。此檔案是主題在 WordPress 後臺的設定頁面,目的是方便新手站長設定網站,但是很多偷盜者抄襲的主題,這裡都會有問題,而這個問題導致的直接結果就是在 WordPress 後臺處理完操作項返回空頁面。
如果 debug 反饋的資訊中,包含 xxx_options.php 和 WordPress 本身的 pluggable.php,那麼問題就出在 xxx_options.php 這個檔案的編碼問題。 WordPress 的後臺 php 檔案的預設編碼是 ANSI,而作者開發的主題通常是 UTF-8,這沒有問題,問題在於部分主題是帶 BOM 的 UTF-8,就是帶簽名的,比普通的 UTF-8 在檔案頭部多了幾個看不見的 16 進位制。解決的辦法是,用 UltraEdit 開啟檔案,另存為無 BOM 的 UTF-8 即可。大家可以多利用 define('WP_DEBUG', true) 這個功能去解決平常碰到的一些問題,遇到解決不了的記得用搜尋引擎去找答案。
2 、主題裡的 functions.php
我不知道這個是通病還是某些主題作者比較噁心人,如果你在 ftp 裡直接覆蓋修改過的 functions.php,結果是兩個檔案裡的內容合併,而不是覆蓋。另外,在你切換主題的時候,這類噁心的主題也會把其他主題的 functions 通通合併到它的 functions.php 下,這樣會導致某些功能函式衝突,導致 WordPress 後臺和網站前臺都打不開,即便開啟了也很慢,嚴重的還會導致伺服器崩潰。所以大家最好要注意 functions.php 這個檔案的使用,在 ftp 上修改的時候,最好刪掉之後重新上傳,而不要直接覆蓋。
3 、外掛與新版本的 WordPress 相容問題
當你開啟 define('WP_DEBUG', true) 後,你會很容易看到,WordPress 提醒你,在 2.X 以後的版本,WordPress 修改了很多地方,在頭部資訊返回的問題上與之前的版本有較大差異,長期不更新的外掛可能會出現相容性問題,這個時候,你要做的就是按照 debug 提示修改外掛裡的檔案。例如 Delete-Revision 這個好用的外掛因為作者已經停止更新了,所以在相容性上有點問題,你要把 add_options_page('Delete-Revision', 'Delete-Revision','8', basename(__FILE__), 'my_options_delete_revision') 改成 add_options_page('Delete-Revision', 'Delete-Revision','manage_options', basename(__FILE__), 'my_options_delete_revision') 。其他的外掛也差不多,需要修改裡面傳遞的引數,只要稍微懂一點開發知識的站長,解決起來並不難。
4 、去掉 WordPress 自帶多餘的頭部資訊
你可以開啟一個 WordPress 搭建的網站頁面,檢視原始碼,你會發現在中間有大量的標籤,很多其實是完全沒有必要的,只會延緩頁面載入速度,造成伺服器負擔而已。下面我就列出通常需要去除的多餘頭部標籤:
remove_action( 'wp_head','wp_generator');
remove_action( 'wp_head','rsd_link');
remove_action( 'wp_head','wlwmanifest_link');
remove_action( 'wp_head','wp_shortlink_wp_head', 10, 0);//去掉 shorlink 標籤,固定連結最佳化後,shortlink 反而是帶? 的動態,比起偽靜態差遠了,還會讓搜尋引擎認為是重複內容。
remove_action( 'template_redirect','wp_shortlink_header', 11, 0);
add_filter('show_admin_bar','__return_false');//移除網站後臺登陸後,前臺顯示的 admin 條
remove_action( 'wp_head', 'index_rel_link');
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');//去除標籤中 pre 、 next 這樣的標籤 (看似有用,實則無用)