作为一名WordPress建站开发者,我为什么坚持尽可能少用插件?
用WordPress第十个年头了,做为一个老玩家,并且已经把WordPress作为重要谋生手段的我,今天想聊聊我对WordPress自己的理念。这些理念并不是出于一时的兴起或者道听途说形成的,而是基于我自己使用WordPress这十年的个人感受和经验,基于我自己对WordPress的学习历程,从无到有,再经过一些转折而形成的。我并不想做一个倚老卖老的说服者,企图说服大家接受我本文标题的观念,我只是想阐述,为什么在使用WordPress若干年头后,我会形成这样的想法。
一年前的我,曾写过这样一篇文章 我为什么不用Elementor、The 7、Avada、Divi之类的主题和插件,本文是那篇文章想法的扩展,如果你不同意那篇文章,大概率也不会同意本文。
起初,我是怎么喜欢上WordPress的?和所有人一样,基于WordPress开箱即用的可用性和方便的扩展性。对这两个特性的最初理解,就是我觉得网站缺少什么功能,大都能很快找到插件,安装上,再设置一下,就能马上启用,这真的太方便了。举个例子,这个网站,最初就是打算用来做我的技术博客的,写技术文章当然要贴代码段啦!WP主题没有适合代码格式的写法,怎么办?后台搜一下“code syntax”,就有一大堆插件可以选,大部分都很好用,选一个安装用户最多的装上就行了。再比如,我嫌默认主题的文章的分页不太好看,搜一下“page navi”,又有一大堆插件可以选,逐个打开他们的主页,选一个看上去最顺眼的安装上,就好了。于是,在最初,我理解的开箱即用,和扩展性,都是WordPres数以万计的插件带来的。以至于在最初的一两年里,想要实现一个什么功能,我都会直接找插件装上,随着使用过的插件越来越多,也逐渐觉得自己就是个WordPress的“专家”了。
然而,这样的“专家”并不好当。当一个插件出问题的时候,我会发邮件给插件作者寻求解决;如果这是一款免费插件,那邮件往往是石沉大海的。即使是有商业支持的付费插件,等待作者解决问题的时间往往也是带时差的,更何况得到回复的可能只是最初的问候,解决一个问题是需要多次邮件沟通+时差的漫长周期的,少则数日,多则一两个月。糟糕的是,往往更多的问题出现在多个插件互相不兼容的情况下,多个插件的作者往往也是会互相打太极的,这类问题一般都得不到解决。这就使得我不得不放弃某一些正在使用的插件,寻求其他能兼容的插件替代,这并不好找,好在WordPress的插件库够大,总能给我这样的人留下希望。然而好不容易寻找到的替代品插件,很可能还是会使人回到上一个轮回中,当前似乎可用,过几个月,它或者别的同时使用的插件有了更新,又变成了互相“掐架”的局面。
你问我这种情况常见吗?非常常见,因为我做的网站种类很多,除了博客,还有社交、论坛、电商、文库、下载站、B2B等等,可能用到各种形形色色的功能,所以我很可能用过不下200款插件。最终,我虽然也搜集了不少整套的,能和谐共处的插件配套解决方案,比如做一个带订阅功能的下载站,需要用WooCommerce和哪些扩展插件配合;再比如做一个带问答功能的论坛,需要用哪些插件组合…等等。然而这类网站做完后,客户可能追加一些“简单”的要求,比如,“让之前那个带问答功能的论坛支持双语言”,就足以让毫无支撑的插件积木大厦顷刻崩塌。为什么会这样?因为多语言最成熟的解决方案插件-WPML,不支持我们正在使用的某一/多个插件啊!再比如前面提到的那个带订阅功能的下载站,客户提出能否加一个“略微”复杂一点的订阅条件,使一部分特指的订阅者可以享受某几款限定商品的组合优惠…拜托,插件做不到这么细腻的设置啊。
这些需求“奇葩”吗?当然不奇葩。当我做的网站越多,越能理解某些需求提出的背景原因。我也越深刻地认识到,靠着插件搭建出来的网站,根本无法满足定制建站的需求;即使在某些顺利的情况下,满足了最初的需求,我也无法保证能靠着这点找插件的本事,陪客户走过业务增长的长路。想陪着他们走得远一些,我的技能就不能只局限于装个WordPress,再帮人改改界面了。
于是,在后来的日子里,我慢慢建立了尽量少用插件的原则。从一开始的一点小功能就要装插件,到能自己写出各种业务需求模块去代替插件,都整合到给客户定制的主题里。所以我现在基于WordPress开发的网站,往往可以做到只用最少量的插件。
比如电商网站,我只用WooCommerce一个插件就行了。对一些UI元素定制、基本的电商逻辑干预,都可以摆脱对第三方插件的需求。因为我自己写过用户推荐(affiliate)模块、收藏夹(wishlist/favorite)模块、运费定义模块、用户自定义字段(customer add-on)模块、订阅(subscribe)模块… 我是从一个插件玩家一下子转变成“插件唾弃者”的吗?显然不可能,即使我一开始就想不用任何插件,一个人也不可能瞬间就具有这些技术能力。这些模块的开发,是我从一个个的服务项目中自己积累出来的,早期,一个项目我可能要用10个插件,过了几年,我才能把对插件的依赖减少到只有一两个。
当我已经自己写出过这些模块,并且自信能根据我的客户要求写出任何他们想要的功能模块的时候,我确定我能摆脱对插件的依赖了,于是我才敢自称为一个WordPress的“开发者”,而不只是个使用者。但是,从骨子里,无论是当初的那个使用者,还是现在的这个开发者,我本质上还是一名“爱好者”,我热爱着WordPress,以及它带给我的技术成长之路。这条路,并没有让我架空着去学习代码,而是接地气地给我出了一个个问题(客户的真实需求),又体贴的提供了大量的文档和谷歌链接,让我自己找到答案,从而写出了能解决这些难题的代码。
如今,以我的眼光再去看当年自己做过的那些项目,以及现今大部分还是只能靠堆插件给客户建站的“建站公司”,我的目光变得挑剔起来。我能以不到10%的代码去构建一个“插件缝合怪”网站;我能把这些网站的性能提高一倍以上,无论前端还是后端;我能干干净净地还原任何我能看到的电商类型,而不必担心插件的制肘和第三方的责任。
最重要的是:客户把网站交给我,就是交给我本人,而不是我本人+一群不认识的插件作者的组合。
好了,再回头理解本文开头说的WordPress的第二个特性-扩展性,在我这里是不是就没有了呢?当然不是。只是理解的角度不同而已。正是因为WordPress在代码层面优秀的扩展性,能帮我在WordPress平台上更快的写出业务需要的代码,完成定制的要求。WordPress在逻辑层面的扩展性,也不仅仅体现在第三方插件和主题上。它提供的Rest API和相关的定制接口,更使它的使用场景不仅局限于做网站,你几乎能用它做后台,完成任何平台的开发需求,所以我基于WordPress也做了很多个微信小程序,顺便还看了下百度和支付宝的小程序,目测都不在话下。安卓和iOS平台的APP也都能基于它开发,只是我自己没有开拓这方面的业务,个人精力有限嘛!
以上观点,仅出于我当前的眼界。对于WordPress,我既没有写过一款有公共贡献的流行插件,也没有写过一款公开售卖的主题,所以我自认为不是什么高级玩家。直到现在,也不敢惶称自己能完全摆脱WordPress的插件生态,更无意贬低对插件的使用。毕竟,WordPress那可怕的市场份额,几乎都是这些伟大的插件和主题带来的。希望看到WordPress继续发展的同时,有越来越多的WordPress使用者对信手拈来的插件能有多一点不同角度的看法。你是否可以吸收它们、把它们变成你自己?退一步说,不要轻易迷失在插件的海洋里,毕竟,每个插件的作者,也都是怀揣各自目标的人。