你也许常听到有人说:我要帮我的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; 是同一件事。)
还有最重要的:尽可能减少数据库读取。