张戈博客之前分享过一篇《WordPress显示访客UA信息:ShowUserAgent纯代码轻度汉化版》的部署教程,算是满足了WordPress折腾爱好者的空虚和寂寞,不过这个插件只能显示国籍、操作系统和浏览器三种信息,看来还有一定的折腾空间。 前不久,有朋友留言说同时集成了ShowUserAgent和IP归属地的文字信息。看了下还是挺不错的,连运营商都给肉出来了。 于是,张戈试着折腾了下,目前已经用了有一段时间了。测试了在线获取和本地数据2种方案,都还不错!不过在线获取方式,若是没有做静态化可能会稍微拖慢加载速度。 下面开始分享。 一、在线方案 、在线API 在线查询IP信息的API有很多,比如淘宝、百度和新浪都有IP信息查询的API接口,地址如下: 百度:http:apistore。baidu。commicroserviceiplookup?ip114。114。114。114 淘宝:http:ip。taobao。comservicegetIpInfo。php?ip114。114。114。114 新浪:http:int。dpool。sina。com。cniplookupiplookup。php?ip114。114。114。114 请求方式都是GET,返回都是json格式。 如何将这个东东应用到WordPress评论列表呢?很简单,挑一个用得比较多的淘宝作为范例吧!喜欢其他的自行参考修改即可。 、PHP代码 PHP WordP显示评论者IP归属地PHP函数 http:zhangge。net5060。html getlocate(ip){ if(emptyempty(ip))getcommentauthorIP(); curlinit(); 5; (ch,CURLOPTURL,‘http:ip。taobao。comservicegetIpInfo。php?ip’。ip); (ch,CURLOPTRETURNTRANSFER,1); (ch,CURLOPTCONNECTTIMEOUT,timeout); curlexec(ch); curlclose(ch); jsondecode(filecontents,true); (result〔‘data’〕〔‘country’〕!‘中国’){ result〔‘data’〕〔‘country’〕; }{ result〔‘data’〕〔‘country’〕。’’。result〔‘data’〕〔‘region’〕。’’。result〔‘data’〕〔‘city’〕。’’。result〔‘data’〕〔‘isp’〕; } } 将上述代码添加到WordPress主题函数模板文件functions。php中并保存。 然后,在WordPress评论模板函数中合适的位置插入如下代码即可 PHP 1 Ps:大部分国内主题都会自定义一个评论模板函数,要找到这个函数很简单,先打开主题下的评论模板文件comments。php文件,找到如下类似代码: PHP 1 如上代码中的callback值则是主题自定义的评论模板回调函数,即mythemecomment。 接着,只要在主题下全局搜索mythemecomment这个关键词就能找到对应的函数啦!至于添加到哪就自己把握了,每个主题都不一样,我就不赘述了。 这个在线查询评论者归属地的效果忘记截图了,我定义的是是〔中国广东深圳电信〕这种形式,喜欢的可以部署看看。 二、本地方案 本地方案则是借助qq纯真ip数据库来查询IP的归属地信息,无需在线获取,从而效率更高。当然,本地数据是不会自己更新的,实时准确性肯定比在线的稍微弱一点,不过我们自己手动更新本地IP数据库文件就好了。 、数据文件 先下载张戈博客整理好的压缩包,解压后得到ip2c文件夹,然后上传到WordPress主题目录下。 下载地址 、部署代码 I。功能集成 为了避免相对路径的麻烦问题,此次分享我已经将可用代码直接放到压缩包当中。 上传到主题目录之后,请编辑WordPress主题目录下的functions。php文件,添加如下代码: PHP 1include(“ip2cip2c。php”);IP归属地和运营商查询功能 II。展示代码 接着参考上文在线方案,找到主题自定义的评论样式回调函数,然后在合适的位置加入如下代码: PHP 1 就能在前台评论列表对应位置展示评论者的IP归属地和运营商信息了: 三、结合使用 可能也有人喜欢张戈博客现在的形式,将之前的ShowUserAgent和这次文字结合在一起,如上图所示。其实也很简单,先按照上一次分享的教程部署好ShowUserAgent功能函数,然后在评论回调函数合适的位置插入如下代码即可: 、选择在线方案: PHP 1 、选择本地方案: PHP 1 弄好之后,就能同时展示UA信息图标和文字归属地信息了,还是挺丰富的。有的归属地甚至可以具体到某个楼层。。。 最后,再啰嗦一下,Begin主题的评论回调函数位于beginincfunctionscommenttemplate。php,还不会的话就只能呵呵了。