一个合作几年的客户,线上业务扩展到了自定义产品销售,前面运营了WooCommerce两站,积累了一些经验,决定复用这些经验,快速成站。
新站几天内已在线,一波配置客户自己基本轻车熟路,店面迅速开始铺品内测。万事俱备,只欠东风,在“自定义产品”的方案选型上卡了点儿壳,前后折腾一个月,虽然最终搞定了,但还是有些教训值得吸取,想记一记。
WooCommerce的生态对自定义产品的支持是充分的,仅仅wp.org就有多个插件方案可选:
- Advanced Product Fields (Product Addons) for WooCommerce
- Product Addons for Woocommerce
- Extra Product Options (Product Addons) for WooCommerce
都提供free/premium版本,插件有付费版我认为是一个正向信号,付费版对我来说最大的价值在于有可靠的技术Support渠道,这非常重要。
故事从第一个插件开始,由StudioWombat开发,这是一个拥有99个五星,只有2个1星评价的插件,我们开始试用的时候满怀信心,它的Last update是1 day ago(此时是3 weeks ago),作者显然不是懒人。
两周后有个我们未曾预料到的一个购物车插件兼容性问题阻断了去路,原先成功的配置突然出了问题,根据我以往的经验,这时候预期开Troubleshoot去做所谓插件兼容性排查(WordPress里我最恨的工作),不如给插件作者去邮件,不是说前者的排查毫无用处,而是在一个复杂的系统里,仅仅知道哪个插件有问题是不够的,还要找到它确切哪里有问题以及作者能否在确定的ETA下解决它,WooCommerce网店不会轻易用或不用一个插件,用某插件本身是经过多少有些曲折的选型助产过程,WC生态就是这样,你总是有多个选择,这同时是好消息和坏消息。
48小时候后StudioWombat的作者回复:“尊驾的多货币插件我们是不支持的,也不打算支持。” —— 他回复这封邮件的时候,并没有打算仔细去理解我们的问题(尽管我们已经花了钱买了付费版),后来证明他的话只对了一半,我们的多货币插件他们的确不支持,但兼容性问题并非由多货币插件导致。
客户的3个WooCommerce站点用的是同一个多货币切换插件方案,它工作良好,这个插件本身从来没让我们操过心,只是价格比较贵,但过去两年它已经用稳定性和质量说服了我们,它实际上在页内同类插件内有着数一数二的口碑(这多少已经体现在它的定价里了)。所以被告知有功能处于上层的插件开发方告诉我“我们不支持也不打算支持时”,我感觉到的是傲慢,我不喜欢这个回信者的语气,他不该忘记我们已经是他的付费客户这一事实。
我花了一周时间尝试对接多货币插件技术方和这个自定义产品插件的技术,后者再一次强烈表达了不想兼容前者的意思,以至于沟通到后来,去信不再得到回复了,我大概也知道这条路走不通。
从纯编程的角度来说,支持我们的多货币插件有多难?我一个写过点PHP代码的码农看来,一点不难,但对方已经做出了选择,有时候就是这样。
我们联系了插件3的作者,询问了提供X多货币插件兼容性的可能性,对方的售前回复的大概意思是:“如果您购买我们的付费版插件,我们将为您解决这一问题”。言外之意:不支持,也许他并不知道我在说什么,只能给一个万金油的回答。我应该先买付费版再发Request让你们解决问题吗?也许可以,对我来说只是个掏钱的问题。但我碰到过更好的技术客服,是这样的,今天我去邮件说一个bug report或feature request,第二天对方就把更新的zip包发过来了,回复全文是这样的:“我在附件的zip包包含了您要的功能/修复,您可否用用看,这是一个测试版本无法更新,稍后将放出正式版本更新,届时您可以用点这个链接购买” —— 聪明,既然这样,take my money.
对于插件3懒洋洋的回复(也许我太刻薄了),对不起,先把你放进backlog。
插件2的作者的回复很干脆:“对不起,很不幸不支持”,然后给我一个链接,文章里说了一些技术架构与维护性上的风险,技术上都成立,但他们显然也不是很明白软件毕竟是拿来卖的,而且这种case才是需要牛逼架构能力的时候,为一致性放弃功能也许是开发智慧,但在极限约束下改进架构也未必是坏主意,当然这是我作为用户的立场,他们有自己的立场,这无可厚非。
在穷尽市场上所有4.5星评价以上适配插件以后,我决定把希望寄托在YITH上,我和他们打交道很久,在他们的产品上花过的钱少说也有2-3万,他们不会让我失望。
果然,我去的售前邮件12小时内得到了回复,客服快乐地告诉我:“我已经和我们的Developer确认过了,我们的PA插件能够与贵站的X多货币插件协同工作”,收到邮件的时候,他们的Live Chat正好在线,我顺便又在线确认了一遍,又一个快乐的客服告诉我他们的产品能支持我们的X多货币,“她”和身边的Developer确认过了,我等了5分钟,但很满意,下了单。
不行!
产品自定义项的价格增量根本不会随着货币切换变化,如果我们让美国的客户看到产品加价是100美金而不是100港币折算后的12.90美金,他们是绝对不可能下单的。
显然这次YITH的售前和某Developer翻车了,但他们毕竟是有尊严的公司,项目经理承诺解决此问题,我不依不饶地问他们有没有确定的ETA,问了两遍,因为工单被客服系统自动标记为Resolve了,我最终没能得到明确的ETA,于是又等了一个礼拜。
收到了新版本发布的通知邮件,迫不及待地去看CHANGELOG,没有与X的兼容性,没有,没有 … 没有,他们的项目经理决定这个需求的优先级不高。
这时候离选型开始已经过去一个月了,客户和我一样,开始失去耐心,技术上我的选择并不多。
- 自己动手代码,对接X,解决兼容性问题
- 考虑替换掉X,保证核心业务可运行,解决造成的额外问题
对于1,与X的对接代码我不是第一次写,这并非难点,麻烦的地方是找到所选定的对接插件的自定义点,这些点常常是HOOK,或者是Template,但也可能是最坏的情况:没有HOOK也没有Template,剩下的就是Hack,如果解决一个兼容问题要Hack一个插件,我仍然不确定是否值得,我有过非常难堪的回忆。
对于2,我当时评估有50%以上的可行性,但可见有多处功能会坏掉,必须重制,即使重新配置也是重新定制,这不比Hack一个插件更坏,但也好不到哪里去,这条路迈开第一步就是很长很宽的雷区,准备好和bug战通宵吧。
不管怎样,试试!我把完成5成的对接代码发给了X的技术,回信的应该是个码农,帮我改进了一些API调用上的问题,我把对接代码写到8成熟的时候,他发过来一个链接,说市场上最近会有一款(与他们合作)能100%兼容X的插件推出,“如果你不介意等到下周一我们的技术文档会更新并发布细节”。
“等你个鬼!” 我内心默默念道。
当周日我把方案2的风险评估了一遍,1的代码进展不大,还在邮件里想威逼利诱世界另一边的一个码农加一个对他来说没任何损失的HOOK。
周一早上看完孩子喝奶,手机收到Gmail推送,是X过来的一条提醒,“请试试这个插件”。
… 好吧,等我查看那个催HOOK的回复怎么说先 …
一小时后试用X推荐的插件(我就叫它E吧),的确,功能完整,全兼容,至此似乎问题得到了全面解决,真高兴!
客户也很高兴,但下午的时候说发现自定义产品数据无法由他熟悉常用的订单导出插件兼容,感觉这似乎又是一场苦战,结果有惊无险,傍晚2小时内顺利找到了方案,导出插件为E准备了代码口子,兼容!
- 兼容性问题是WooCommerce项目技术拓展的强约束
- 很多时候解决兼容性问题的最佳途径不是代码是沟通,是Reach Out
- 尽管有时代码和沟通都会失灵,但要相信问题一定能解决,事在人为
- 看到wp.org上的五星插件也别太激动
- 买付费软件的最大价值和最大负价值都是做软件的人
这应该是到目前,对我来说,最纠结的一次WooCommerce选型,碰到了很多需求与技术边界,所幸通过不懈努力,顺利渡过了,特此纪念。
看的一头雾水, 竟然也感到紧张莫名,带点小刺激. shushu 有机会可以尝试下写故事, ^_^.
漏了个问题, 话说产品线最全的, 插件质量和服务, 都还不错的 wocommerce 插件商, 是这个YITH 么?
看它在 wordpress.org 上的YITH Essential Kit 综合插件, 下载量1w 多, 其他yith 的插件有几十万的.
YITH是我长期使用的插件供应商,官网付费版在这里:https://yithemes.com/ 他们有一支专业的WooCommerce开发团队和很大的user base,没有花太多力气去运营免费版,只用来引流用,价值都在付费版插件里。