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