给子比主题评论区增加显示地区

从今年4月开始,你会发现各大网络信息平台(如:抖音、快手、微博、B站 等)。都在评论区和用户个人主页增加了ip归属地信息。子比未自带显示归属地功能,那么该如何增加功能呢?

《互联网用户账号名称信息管理规定》第十二条规定(自己看吧,我就不复制了)。

IMG_20221027_101103

要求

增加功能需要用到高德地图api,自己百度,自己开通。当然也可以用其他平台的接口,要学会举一反三。

IMG_20221027_102600

服务平台要用Web服务

高德地图API接口开发指南文档:

https://lbs.amap.com/api/webservice/guide/api/ipconfig

本帖是基于子比主题6.7写的内容,其它版本是否适用,自己研究

如何使用归属地查询api

第一步:在主题根目录下创建func.php文件,并在第一行写上

IMG_20221027_103656

通过此方法不会影响以后主题在线更新,在线更新不会丢失此功能。

/**
* @description: 根据ip地址获取用户地区
* @param {*} $user_ip
* @return {*}
*/
function wxs_user_ip($user_ip)
{
$api_key = ; //这里填上你申请的高德key
if (!$api_key || !$user_ip) {
return ;
}
$api = ‘https://restapi.amap.com/v3/ip?key=’ . $api_key . ‘&output=json&ip=’ . $user_ip;
$json = file_get_contents($api);
$arr = (array) json_decode($json, true);
if (empty($arr[‘province’])) {
//没有获取到地区显示的内容
$dizhi = “未知地区”; //这里可以改成其他的
} else {
$dizhi = $arr[‘province’];
}
return $dizhi;
}
/**
* @description: 在评论区显示地区
* @param {*} $info
* @param {*} $comment
* @param {*} $depth
* @return {*}
*/
function wxs_footer_info_add_province($info, $comment, $depth)
{
$user_ip = $comment>comment_author_IP;
if ($user_ip) {
$province = wxs_user_ip($user_ip);
$province = $province ? . $user_ip . ‘” title=”该用户评论时所在地区:’ . $province . ‘”>’ . $province . : ;
$info = $province . $info;
}
return $info;
}
add_filter(‘comment_footer_info’, ‘wxs_footer_info_add_province’, 10, 3);
/**
*由子比主题作者进行代码优化
*原代码来自本帖作者 天无神话
**/

代码的原理:使用wp记录评论者评论时的ip地址,将评论记录的ip作为接口参数拼接到接口url。使用php的函数获取api接口返回json数组。将json转换为php认识的内容,再将省份的内容提取出来。在指定位置增加添加经过判断是否为未知区域的归属地。

高德地图的api除了无法查询到1%IP归属地和海外归属地,除此之外还有一个大坑。它查询不到IP的归属地,就返回数组为空。我写这个代码的时候,没有注意到,也没有加判断。当时有一个人的评论显示Array,当时给我弄懵了,后来才发现这个大坑。所以我给代码加了显示未知归属地的判断。

注意事项:

如果你的网站有cdn,那么需要在wordpress配置文件wp-config.php第二行<?php下面增加下面的代码,用于获取用户真实ip地址,否则wp保存的就是cdn的回源的ip。

//获取用户真实ip地址
if(isset($_SERVER[‘HTTP_X_FORWARDED_FOR’])) {
$list = explode(‘,’,$_SERVER[‘HTTP_X_FORWARDED_FOR’]);
$_SERVER[‘REMOTE_ADDR’] = $list[0];
}

会举一反三的人,看了帖子以后已经在其它页面增加归属地显示了,你还在等什么?

THE END
喜欢就支持一下吧
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称