前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享WordPress显示评论者IP的归属地及运营商信息的2种方案

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

作者头像
张戈
发布2018-03-21 16:08:22
1.5K0
发布2018-03-21 16:08:22
举报
文章被收录于专栏:张戈的专栏张戈的专栏

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

前不久,有朋友留言说同时集成了 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 代码

代码语言:javascript
复制
/**
* WordPress 显示评论者IP归属地PHP函数
* http://zhangge.net/5060.html
**/
function get_locate($ip) {
    if(empty($ip)) $ip = get_comment_author_IP();
    $ch = curl_init();  
    $timeout = 5;  
    curl_setopt ($ch, CURLOPT_URL, 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);  
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
    $file_contents = curl_exec($ch);  
    curl_close($ch);  
    $result = json_decode($file_contents,true);
    if ($result['data']['country'] != '中国') {
        return $result['data']['country'];
    } else {
        return $result['data']['country'].' · '.$result['data']['region'].' · '.$result['data']['city'].' · '.$result['data']['isp'];
    }
}

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

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

代码语言:javascript
复制
<?php get_locate(get_comment_author_ip());?>

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

代码语言:javascript
复制
<?php wp_list_comments( 'type=comment&callback=mytheme_comment' ); ?>

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

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

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

二、本地方案

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

①、数据文件

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

下载地址

②、部署代码

I. 功能集成

为了避免相对路径的麻烦问题,此次分享我已经将可用代码直接放到压缩包当中。

上传到主题目录之后,请编辑 WordPress 主题目录下的 functions.php 文件,添加如下代码:

代码语言:javascript
复制
include("ip2c/ip2c.php"); //IP归属地和运营商查询功能

II. 展示代码

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

代码语言:javascript
复制
<?php echo convertip(get_comment_author_ip()); ?>

就能在前台评论列表对应位置展示评论者的 IP 归属地和运营商信息了:

三、结合使用

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

①、选择在线方案:

代码语言:javascript
复制
<?php CID_print_comment_flag();echo ' ';CID_print_comment_browser();get_locate(get_comment_author_ip());?>

②、选择本地方案:

代码语言:javascript
复制
<?php CID_print_comment_flag();echo ' ';CID_print_comment_browser(); echo convertip(get_comment_author_ip()); ?>

弄好之后,就能同时展示 UA 信息图标和文字归属地信息了,还是挺丰富的。有的归属地甚至可以具体到某个楼层。。。

最后,再啰嗦一下,Begin 主题的评论回调函数位于 begin/inc/functions/comment-template.php,还不会的话就只能呵呵了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年08月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、在线方案
    • ①、在线 API
      • ②、PHP 代码
      • 二、本地方案
        • ①、数据文件
          • ②、部署代码
          • 三、结合使用
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档