为你的WordPress站点博客添加评论区显示用户IP地址
序言:
之前看到有相关法规需要显示用户ip地址,虽然我这是一个小站点,但是还是萌生了增加这个功能的想法。
基本思路
通过WordPress的
get_comment_author_ip()
获取到用户的ip地址,然后利用腾讯地图开放平台查询ip归属地,然后显示在站点前端。
效果演示
功能实现
首先在站点目录新建get_user_address.php文件,然后贴入以下代码:
<?php
function province($user_ip)
{
$url = "https://apis.map.qq.com/ws/location/v1/ip?key=(这里输入你的key)&ip=".$user_ip;
$UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_ENCODING, '');
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($curl);
$data = json_decode($data,true);
$result = array_column($data, 'ad_info');
$resulta = array_column($result, 'province');
$province = array_shift($resulta);
return $province;
}
?>
方法调用
在主题文件目录下的functions.php文件最后一行填入以下代码:
include("get_user_address.php");
评论区显示
在主题的评论文件中填入以下代码,建议填在时间代码后方:
·<a style='color:#07C160'><?php echo province(get_comment_author_ip()); ?></a>
然后你就能看到评论区的ip地址了。
关于CDN加速
如果使用了CDN加速,可能会访问CDN的地址,解决办法可以在wp-config.php添加以下代码:
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}
然后就可以看到真实ip地址了。
王子涵
老哥 这个评论 在主题的评论文件中填入以下代码,建议填在时间代码后方: 这个是不是添加在comments.php里面啊 我跟你一样的注册 添加在这个里面了 评论IP归属地还是不显示
战东海
@王子涵 不一定主题不一样添加的位置不一样
王子涵
@战东海 我也是pix主题 你是加的comments.php里面么
战东海
@王子涵 pix主题 不用添加主题自带片刻设置里高德开放平台应用KEY填入就可以
王子涵
@战东海 好的 谢谢老哥
王子涵
@战东海 老哥 我填写完了key 但是评论还不显示呢 还需要按照你这个填上评论区代码么
战东海
@王子涵 不需要高德web服务
王子涵
@战东海 我选的就是web的 不知道咋回事 不显示评论时候
战东海
@王子涵 不行问问老付
王子涵
@战东海 好的 麻烦了