忙了幾天,暈頭轉向,有幾天都要弄到凌晨兩點才願意去睡,明明已經超困了,但是看到那些該死的問題和錯誤,我實在是放不下心去睡覺啊。各位別介意,忍不住發幾句牢騷,馬上轉入正題吧。這幾天讓我困擾的東西就是 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 這樣的標籤 (看似有用,實則無用)