WordPress显示评论者IP的归属地及运营商信息的2种方案

2016年7月23日20:49:32 7 354

博客之前分享过一篇《WordPress显示访客UA信息:Show UserAgent纯代码轻度汉化版》的部署教程,算是满足了WordPress折腾爱好者的空虚和寂寞,不过这个插件只能显示国籍、操作系统和浏览器三种信息,看来还有一定的折腾空间。分享WordPress显示评论者IP的归属地及运营商信息的2种方案

前不久,有朋友留言说同时集成了Show UserAgent和IP归属地的文字信息。看了下还是挺不错的,连运营商都给肉出来了。

于是,试着折腾了下,目前已经用了有一段时间了。测试了在线获取和本地数据2种方案,都还不错!不过在线获取方式,若是没有做静态化可能会稍微拖慢加载速度。

下面开始分享。

一、在线方案

①、在线API

在线查询IP信息的API有很多,比如淘宝百度和新浪都有IP信息查询的API接口,地址如下:

百度:http://apistore.baidu.com/microservice/iplookup?ip=114.114.114.114

淘宝:http://ip.taobao.com/service/getIpInfo.php?ip=114.114.114.114

新浪:http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=114.114.114.114

请求方式都是GET,返回都是json格式。

如何将这个东东应用到WordPress评论列表呢?很简单,挑一个用得比较多的淘宝作为范例吧!喜欢其他的自行参考修改即可。

②、PHP代码

  1. /**
  2. * WordPress 显示评论者IP归属地PHP函数
  3. **/
  4. function get_locate($ip) {
  5.     if(emptyempty($ip)) $ip = get_comment_author_IP();
  6.     $ch = curl_init();
  7.     $timeout = 5;
  8.     curl_setopt ($ch, CURLOPT_URL, 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);  
  9.     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  10.     curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  11.     $file_contents = curl_exec($ch);
  12.     curl_close($ch);
  13.     $result = json_decode($file_contents,true);
  14.     if ($result['data']['country'] != '中国') {
  15.         return $result['data']['country'];
  16.     } else {
  17.         return $result['data']['country'].' · '.$result['data']['region'].' · '.$result['data']['city'].' · '.$result['data']['isp'];
  18.     }
  19. }

将上述代码添加到WordPress主题函数模板文件 functions.php 中并保存。

然后,在 WordPress 评论模板函数中合适的位置插入如下代码即可:

Ps:大部分国内主题都会自定义一个评论模板函数,要找到这个函数很简单,先打开主题下的评论模板文件comments.php文件,找到如下类似代码:

如上代码中的callback值则是主题自定义的评论模板回调函数,即 mytheme_comment。

接着,只要在主题下全局搜索 mytheme_comment 这个关键词就能找到对应的函数啦!至于添加到哪就自己把握了,每个主题都不一样,我就不赘述了。

这个在线查询评论者归属地的效果忘记截图了,我定义的是是 [中国 · 广东 · 深圳 · 电信] 这种形式,喜欢的可以部署看看。

二、本地方案

本地方案则是借助qq纯真ip数据库来查询IP的归属地信息,无需在线获取,从而效率更高。当然,本地数据是不会自己更新的,实时准确性肯定比在线的稍微弱一点,不过我们自己手动更新本地IP数据库文件就好了。

①、数据文件

先下载博客整理好的压缩包,解压后得到 ip2c 文件夹,然后上传到WordPress主题目录下。

②、部署代码

I. 功能集成

为了避免相对路径的麻烦问题,此次分享我已经将可用代码直接放到压缩包当中。
上传到主题目录之后,请编辑 WordPress 主题目录下的 functions.php 文件,添加如下代码:

II. 展示代码

接着参考上文在线方案,找到主题自定义的评论样式回调函数,然后在合适的位置加入如下代码:

三、结合使用

可能也有人喜欢张戈博客现在的形式,将之前的 Show-UserAgent 和这次文字结合在一起,如上图所示。其实也很简单,先按照上一次分享的教程部署好 Show-UserAgent 功能函数,然后在评论回调函数合适的位置插入如下代码即可:

①、选择在线方案:

②、选择本地方案:

弄好之后,就能同时展示UA信息图标和文字归属地信息了,还是挺丰富的。有的归属地甚至可以具体到某个楼层。。。
最后,再啰嗦一下,Begin主题的评论回调函数位于 begin/inc/functions/comment-template.php,还不会的话就只能呵呵了。

使用CDN的朋友在 wp-config.php文件里加入以下代码

文件下载

广告也精彩
weinxin
我的微信
这是我的微信扫一扫

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:7   其中:访客  4   博主  3

    • avatar 每次醒来 来自天朝的朋友 谷歌浏览器 Windows 10四川省成都市新都区 电信 0

      用这个代码有个问题。就是如果将显示正确IP这个代码放入wp-config.php,当在大量IP GET你的时候,如果你的服务器不是很强,会直接挂挂掉。

      • avatar QQ游客 来自天朝的朋友 QQ浏览器  Android 7.1.1 OPPO R11 Plus Build/NMF26X 广东省广州市 电信 1

        不错,begin主题怎么设置,我还没搞懂,把代码弄上去了,不显示,应该没设置好

          • avatar 堆爱博客 博主 来自天朝的朋友 谷歌浏览器  OPPO R11 Plus Build/NMF26X 贵州省铜仁地区 电信

            @QQ游客 慢慢研究吧!我很久没管这个了。都生疏了。

          • avatar 一曲长歌辞烟雨 来自天朝的朋友 火狐浏览器 Windows 10天津市 电信 1

            博主你好,我想要你的这个鼠标经过有选中效果才显示归属地的代码,如果方便的话,可以分享一下么,O(∩_∩)O谢谢

            • avatar 派派网 来自天朝的朋友 谷歌浏览器 Windows 10广西南宁市 联通 0

              过来学习,欢迎经常互访,共同进步。

                • avatar 堆爱 博主 来自天朝的朋友 火狐浏览器 Windows 10贵州省贵阳市 电信

                  @派派网 好的。。。你博客还没完善哦。好多图图不显示。头像也是。