為什麼你不該使用WordPress Plugins?


作者: | 2012/03/30 14:38:10 | 留言



你也許常聽到有人說:我要幫我的WP網站更新一些功能,但我不使用任何 Plugins

相信很多人一開始使用WordPress時,也會這樣想:WordPress應該包含所有功能,為什麼我非得去使用Plugins來加入一些常見的功能?為何我需要去安裝Plugins來抵擋垃圾留言(spam)? 為何我需要額外去安裝SEO套件?為何WordPress不一開始就把這些好用的功能都收錄進來?

當這些人用了WP一陣子後就懂了,因為我們不需要世界上最大的瑞士刀。上圖的瑞士刀有85個用途,但一般人根本不會想用它,在靈巧及功能性上它都已經失去了最佳的平衡。

所以當我聽到有人說「我要做這做那、改東改西,但不使用Plugins…」我都忍不住去想這整件事根本是錯的,於是我問「為什麼不用Plugins?」,他們給了我一些神奇的原因,但我仍然堅持我的信仰:沒有工具是絕對需要被搞成 All-in-one,而且如果我把客製功能hard code的愈多,以後它將會愈難以更新或昇級。

來瞧瞧有哪些不願使用plugin的原因:

Plugins 不屬於「核心」的一部份,所以它不太可靠。

不意外,應該很多人有這樣的疑問。的確,WordPress打造了一個很棒的核心,所以我們可以透過Hook機制來實行我們需要的功能,如果你覺得WP核心是可靠的,那Hook本身也值得被信任,Plugins的運作應該也是可靠的,所以真正的恐懼是:

Plugins 的作者可能會消失

我們都知道 WordPress Plugins 開發者很多都消失了XD,有些開發者甚至還有參與核心的開發。是的,作者可能消失,但如果你把WP Plugins當成所謂的軟體供應/支援商,那顯然是很危險的,你不該如此。

讓我們看看HP平板電腦停產的例子,HP是個公認可靠又知名的公司,但總是沒人知道未來會發生什麼事。一間實體的大公司都可能無預警的關上它的大門,一支WP Plugin停止更新或作者突然消失,大概也不足為奇了。所以也許你也許真正想說的是:

Plugins不安全

我想知道上次你為你的WordPress網站進行全面的安全性檢驗是什麼時候?注意,我不是說plugins沒有安全性上的問題,但如果你有在運行你自己的安全性檢驗,而且安全性一直是你最關心也最害怕的一環,那你應該平等的一併測試整個WordPress核心、佈景主題及所有plugins的安全性。

所以如果有個 plugin你真的很想要,你應該review它的原始碼,而不是閉著眼睛去使用,這也才是open source最具意義的價值。我們打開plugin的原始碼,也許看見base64()或者get()呼叫莫名其妙的東西,我們就能立刻知道它夠不夠安全,進而去修復或回報給org。

但也許還有一些人還是覺得:

Plugins 還是比較不可靠

你也許又會說「路人甲的程式碼就是不可靠」。是的,沒有任何東西是完美的。核心也是另一群陌生人寫的,而且核心也是需要歷經很多人的測試 (如果你也有架WP,你也正在參與可靠性的測試),即便有這麼多人在測試,不免還是有很多bug正在待解中 (我上週才剛發現2個官方證實的bug,只能workaround)。

所以也許你真正想說的是:

我自幹做出來的WP網站,那樣的程式碼才會「一碼永留傳」!

如果你不用plugins,選擇自幹,那有兩條路可以選擇:
1. 改核心
2. 改functions.php

如果你改核心,等於你的網站永遠陷入「自我手動更新」模式,這表示:永不能使用自動更新,必須親自review所有程式。如果你改的是functions.php,那比較好,畢竟它跟寫plugins的主要差別,只在於放置的目錄不同而已。把code放在functions.php,代表這個功能只能存在這個佈景裡,失去了重覆利用的好處。

所以,就他X的用那該死的plugin吧!

難道任何情況都適合使用 Plugin嗎?當然不。
1. 如果沒有好的理由去使用plugin,就別用。
2. 如果它是多餘的,就別用。
3. 如果你正在練習寫code,就別用。

還有什麼使用Plugin可能會有的壞處嗎?

也許你會想到效能(performance)吧?的確有可能影響,但你自幹寫出來的code也可能有效能問題。使用正確的方法來撰寫plugins可以有效提昇網站的效能 (寬義來說,這也是WP核心的一環:D),例如只在需要的時候才載入你寫的Hook Function (如只該出現在後台的就記得用is_admin),或者把你的plugin主檔寫成loader。在處理佈景時,要達成某種效果雖然有很多種方法,但請儘量找到最正確的用法。(例如:別以為 the_content() 跟 echo $post->post_content; 是同一件事。)

還有最重要的:儘可能減少資料庫存取。

關於plugin載入效能的改善可參考這篇:
http://www.dev4press.com/2011/blog/benchmark/measuring-impact-of-plugins-on-wordpress-loading/

本篇大部份內容改寫自:
http://tech.ipstenu.org/2012/why-you-shouldnt-use-plugins/


標籤:, ,

分類:,

本文作者是Audi Lu

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

*

*

*

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料