现在状态就是该写的内容基本都写的差不多了,有些不该写的也基本都写了,反正记录已经成了一种习惯,也不在乎什么流量或者关注。
所以在平时工作中碰到某个有趣的点,或者说某个我花了比较时间的点时,才会特意用文章的时候总结输出一下。
今天就聊 WooCommerce 这个插件在结账时的一个小设置,用户收获地址自动填充。
使用过 Shopify 这种建站系统的小伙伴应该能知道,我们在设置商品结账流程时,系统是会默认根据用户的 IP 地址来自动填充对应的运输区域。
比如洛杉矶的客户来你的网站下单,那他在填写运输地址时,对应的国家、州、城市等这些字段会被系统自动填充。
我自己是觉得这种功能挺好用的,因为这种自动填充功能能帮用户节省好几步操作。
而且这种功能的技术原理并不复杂,无非就是定位 IP 地址,并获取 IP 地址对应的地理区域,然后把这些信息作为默认值填充到对应的表单里。
但这种功能能对应到 WooCommerce 上,其解决方案就比较麻烦,因为系统插件并不提供这种定位功能(可能是出于政策合规的要求)。

需要我们去一个第三方网站注册一个账户,并生成一个信息查询的 API Key,然后再把这个 API key 填写到 WooCommerce Integration 设置里面去。
填写完成之后,还需要去修改用户运输地址的默认选项(选择地理位置定位)。
但说实话,这种功能加完之后还不如不加,主要原因有两个。
一是这么设置之后,在前端所有 URL 链接后面都会附带上一个随机字符小尾巴,这些小尾巴可能会被搜搜索引擎收录进去。
且每次刷新网页之后,这个随机字符小尾巴都会改变,于是整体的网站访问体验就不是那么优秀了。
还有一个原因,就是添加完这个 API key 之后,在用户定位上的功能增强并不明显,因为这个 API key 只支持定位用户国家,并不能精确到用户所在的城市或者区域。
所以对于这个功能,我一般是不设置的。
但扛不住有时候强迫症犯了,一直就想去找这个功能优化的解决方案,甚至有时候想自己去手搓一个插件版本来完善这个功能。
过程中我尝试过用代码植入的方式去填充这部分信息,但异步通信的延迟很严重,非常影响用户体验,所以就放弃了。
然后我也尝试过使用 MaxMind 这种技术方案,把所有的 IP 地址做成一份固定地理数据然后存储到数据库里,那用户在下单填写运输地址时便可以直接查询本地数据库了。
但这个方案又很难搞,因为当你具体到城市级的 IP 信息时,所有的 IP 数据加起来会导致整体的数据量很大,于是查询又非常费时间了。
可能一个更好的方案,就是直接用第三方的用户地址信息查询 API 来做这个功能,但这种功能我目前也没有时间去搞。
所以把这个问题输出出来,有兴趣的朋友可以自己研究一下。






