当前位置:首页 > CMS教程 > WordPress > 列表

WordPress显示评论者IP、归属地及运营商信息解决方法

发布:smiling 来源: PHP粉丝网  添加日期:2015-10-15 15:21:18 浏览: 评论:0 

本文我们分享一个 WordPress 利用在张API显示 评论者IP、归属地及运营商信息的功能实现代码,api有很多,本文以淘宝的举例。

①、在线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.     <a href="/tags.php/curl_setopt/" target="_blank">curl_setopt</a> ($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'].'&nbsp;·&nbsp;'.$result['data']['region'].'&nbsp;·&nbsp;'.$result['data']['city'].'&nbsp;·&nbsp;'.$result['data']['isp']; 
  18.     } 
  19. /** 
  20. * WordPress 显示评论者IP归属地PHP函数 
  21. **/ 
  22. function get_locate($ip) { 
  23.     if(emptyempty($ip)) $ip = get_comment_author_IP(); 
  24.     $ch = curl_init();   
  25.     $timeout = 5;   
  26.     curl_setopt ($ch, CURLOPT_URL, 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);   
  27.     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);   
  28.     curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);   
  29.     $file_contents = curl_exec($ch);   
  30.     curl_close($ch);   
  31.     $result = json_decode($file_contents,true); 
  32.     if ($result['data']['country'] != '中国') { 
  33.         return $result['data']['country']; 
  34.     } else { //phpfensi.com 
  35.         return $result['data']['country'].'&nbsp;·&nbsp;'.$result['data']['region'].'&nbsp;·&nbsp;'.$result['data']['city'].'&nbsp;·&nbsp;'.$result['data']['isp']; 
  36.     } 

将上述代码添加到WordPress主题函数模板文件 functions.php 中并保存,然后,在 WordPress 评论模板函数中合适的位置插入如下代码即可:

<?php get_locate(get_comment_author_ip());?>

<?php get_locate(get_comment_author_ip());?>

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

<?php wp_list_comments( 'type=comment&callback=mytheme_comment' ); ?>

<?php wp_list_comments( 'type=comment&callback=mytheme_comment' ); ?>

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

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

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

Tags: WordPress评论者 WordPress运营商

分享到: