WooCommerce 设置的一个细节

现在状态就是该写的内容基本都写的差不多了,有些不该写的也基本都写了,反正记录已经成了一种习惯,也不在乎什么流量或者关注。

所以在平时工作中碰到某个有趣的点,或者说某个我花了比较时间的点时,才会特意用文章的时候总结输出一下。

今天就聊 WooCommerce 这个插件在结账时的一个小设置,用户收获地址自动填充。

使用过 Shopify 这种建站系统的小伙伴应该能知道,我们在设置商品结账流程时,系统是会默认根据用户的 IP 地址来自动填充对应的运输区域。

比如洛杉矶的客户来你的网站下单,那他在填写运输地址时,对应的国家、州、城市等这些字段会被系统自动填充。

我自己是觉得这种功能挺好用的,因为这种自动填充功能能帮用户节省好几步操作。

而且这种功能的技术原理并不复杂,无非就是定位 IP 地址,并获取 IP 地址对应的地理区域,然后把这些信息作为默认值填充到对应的表单里。

但这种功能能对应到 WooCommerce 上,其解决方案就比较麻烦,因为系统插件并不提供这种定位功能(可能是出于政策合规的要求)。

WooCommerce-设置的一个细节

需要我们去一个第三方网站注册一个账户,并生成一个信息查询的 API Key,然后再把这个 API key 填写到 WooCommerce Integration 设置里面去。

填写完成之后,还需要去修改用户运输地址的默认选项(选择地理位置定位)。

但说实话,这种功能加完之后还不如不加,主要原因有两个。

一是这么设置之后,在前端所有 URL 链接后面都会附带上一个随机字符小尾巴,这些小尾巴可能会被搜搜索引擎收录进去。

且每次刷新网页之后,这个随机字符小尾巴都会改变,于是整体的网站访问体验就不是那么优秀了。

还有一个原因,就是添加完这个 API key 之后,在用户定位上的功能增强并不明显,因为这个 API key 只支持定位用户国家,并不能精确到用户所在的城市或者区域。

所以对于这个功能,我一般是不设置的。

但扛不住有时候强迫症犯了,一直就想去找这个功能优化的解决方案,甚至有时候想自己去手搓一个插件版本来完善这个功能。

过程中我尝试过用代码植入的方式去填充这部分信息,但异步通信的延迟很严重,非常影响用户体验,所以就放弃了。

然后我也尝试过使用 MaxMind 这种技术方案,把所有的 IP 地址做成一份固定地理数据然后存储到数据库里,那用户在下单填写运输地址时便可以直接查询本地数据库了。

但这个方案又很难搞,因为当你具体到城市级的 IP 信息时,所有的 IP 数据加起来会导致整体的数据量很大,于是查询又非常费时间了。

可能一个更好的方案,就是直接用第三方的用户地址信息查询 API 来做这个功能,但这种功能我目前也没有时间去搞。

所以把这个问题输出出来,有兴趣的朋友可以自己研究一下。

滚动至顶部