我有一个客户的网站,显示不同的内容根据用户的国家(英国,澳大利亚或其他)。我尝试了几个允许将ip转换为国家的插件(现在我使用的是Visitor Country,我还尝试了ip到国家和World Flags,我想还有一个我记不起来了)。
当我通过vpn查看时,似乎一切正常,但经常旅行的客户几乎总是看到错误的内容(例如,当他在英国时,他看到的是美元而不是英镑符号)。他从几台电脑上试了试。
关于代码,它非常简单。现在,当内容需要不同时,我通常使用:
if($VisitorCountry->GetName()=='United Kingdom') {do stuff}
else if($VisitorCountry->GetName()=='Australia') {do other stuff}
else {do some other stuff}有什么想法吗?
发布于 2014-11-24 11:09:14
可能会迟到,但可能会回答其他人的问题。
如果它适用于您,但不适用于使用各种不同计算机的客户端,那么这可能是一个缓存插件问题。
问题的原因(您的示例):如果页面的“第一个”访问者来自美国,缓存插件将使用您的美元符号对页面进行快照。当您的客户端在英国查看页面时,缓存插件/WP会忽略PHP代码,并提供先前构建的快照(使用美元而不是英镑)。
为什么你的测试没能识别出问题:不是一个批评。(我是刚刚在wordpress.org上列出的Category Country Aware插件的作者。即使是故意用缓存测试我的插件,“以前登录”的问题(下面)也让我困惑不解。)
如果您登录到该网站(作为任何用户)或以前登录的同一浏览器,那么许多可湿性粉剂缓存插件将为您提供一个新生成的UNcached页面。为您所在位置动态生成货币符号的代码将会运行。然而,您的客户在酒店/网吧中使用了从未登录过该网站的计算机,因此他可以看到缓存的页面。
我在上写了更多关于这方面的内容,包括如何在这里测试:http://wptest.means.us.com/2014/11/caching-and-geoLocation/
修复国家/地区位置/缓存冲突:
大多数主要的缓存插件都允许您识别不应该缓存的页面。如果只有几个页面具有自定义内容,或者当国家/地区相关的侧栏小部件仅为包含少量帖子的单个类别显示时,这是可以接受的。但是,如果您必须禁用大量页面的缓存,那么使用缓存插件的好处就会变得微乎其微。
一些缓存插件允许你编写扩展来修改它们的缓存行为。我正在对超级缓存和ZenCache的扩展进行最后的测试,这样它们仍然可以缓存所有页面,并为来自不同国家的访问者提供正确的内容。我将很快将这些添加到我的站点中。你可能会发现你可以为其他插件编写等价的扩展。
https://stackoverflow.com/questions/21308405
复制相似问题