我个人不是很喜欢使用太平洋接口,恰好我会一点点php,就随随便便搞了个本地纯真数据库接口,IPQuery.class.php,qqwry.dat我会放到网盘里
教程开始
1 配置IPQuery.class.php、qqwry.dat文件
文件地址 https://qdqd.lanzouq.com/iK2a714viugb
把压缩包解压到/wp-content/themes/zibll/inc/functions/目录里面,就可以开始操作了
2 配置functions.php
大家找到/wp-content/themes/zibll/inc/functions/funcitons.php这个文件
zib_get_geographical_position_by_ip
大概 是 2509行 到 2577行 里面的内容
这个函数,把里面的内容替换为
function zib_get_geographical_position_by_ip($ip)
{
if (!$ip || strstr($ip, '0.0.0.') || strstr($ip, '192.168.') || strstr($ip, '127.0.')) {
return false;
}
$sdk = _pz('ip_addr_sdk');
if ($sdk === 'qq') {
$ip_addr_sdk = _pz('ip_addr_sdk_qq');
if (!empty($ip_addr_sdk['appkey'])) {
return zib_get_geographical_position_by_qq($ip, $ip_addr_sdk['appkey'], $ip_addr_sdk['secretkey']);
}
}
if ($sdk === 'cz') {
$ip_addr_sdk = _pz('ip_addr_sdk_cz');
return zib_get_geographical_position_by_cz($ip);
}
if ($sdk === 'amap') {
$ip_addr_sdk = _pz('ip_addr_sdk_amap');
if (!empty($ip_addr_sdk['appkey'])) {
return zib_get_geographical_position_by_amap($ip, $ip_addr_sdk['appkey'], $ip_addr_sdk['secretkey']);
}
}
if ($sdk === 'polling') {
$qq_data = array();
$amap_data = array();
$data = array();
//通过qq查询
$ip_addr_sdk = _pz('ip_addr_sdk_qq');
if (!empty($ip_addr_sdk['appkey'])) {
$qq_data = zib_get_geographical_position_by_qq($ip, $ip_addr_sdk['appkey'], $ip_addr_sdk['secretkey']);
if (!empty($qq_data['province'])) {
return $qq_data;
}
}
//通过高德查询
$ip_addr_sdk = _pz('ip_addr_sdk_amap');
if (!empty($ip_addr_sdk['appkey'])) {
$amap_data = zib_get_geographical_position_by_amap($ip, $ip_addr_sdk['appkey'], $ip_addr_sdk['secretkey']);
if (!empty($amap_data['province'])) {
return $amap_data;
}
}
//通过本地纯真数据库查询
if ($sdk === 'cz') {
$ip_addr_sdk = _pz('ip_addr_sdk_cz');
return zib_get_geographical_position_by_cz($ip);
}
//太平洋公共接口
$data = zib_get_geographical_position_by_pconline($ip);
if (!empty($data['province'])) {
return $data;
}
//都没有身份,则进行对比国家
if (!empty($qq_data['nation'])) {
return $qq_data;
}
if (!empty($amap_data['nation'])) {
return $amap_data;
}
if (!empty($data['nation'])) {
return $data;
}
return false;
}
return zib_get_geographical_position_by_pconline($ip);
}
3 配置zib-tool.php
大家找到/wp-content/themes/zibll/inc/functions/zib-tool.php这个文件
拉到最下面,粘贴这个函数
function zib_get_geographical_position_by_cz($ip, $debug = false)
{
//通过本地纯真数据库来获取 By:UQ QQ:3096069542
require_once('IPQuery.class.php');
$ipcx = new IPQuery();
$addr = $ipcx->query($ip);
$response=array('Country'=>$addr['pos']);
$data = array(
'ip' => $ip,
'nation' => !empty($addr['pos']) ? $addr['pos'] : '',
'province' => !empty($addr['pos']) ? $addr['pos'] : '',
'city' => !empty($addr['pos']) ? $addr['pos'] : '',
'sdk' => 'pconline',
);
return $data;
}
4 配置action.php
大家找到/wp-content/themes/zibll/inc/options/action.php这个文件
大概是在第 699行 粘贴下面代码
case 'cz':
$ip_addr_sdk = _pz('ip_addr_sdk_amap');
$test = zib_get_geographical_position_by_cz($ip, true);
if (!$test) {
echo (json_encode(array('error' => 1, 'msg' => '网络数据获取失败,请确保服务器网络畅通')));
exit;
}
if (!isset($test['nation'])) {
$test['ip'] = $ip;
echo (json_encode(array('error' => 1, 'msg' => '本地纯真数据库接口请求失败,错误信息:<br>' . json_encode($test, JSON_UNESCAPED_UNICODE))));
exit;
}
echo (json_encode(array('error' => 0, 'msg' => '本地纯真数据库接口请求成功<br>' . json_encode($test, JSON_UNESCAPED_UNICODE))));
exit;
break;
5 配置admin-options.php
大家找到/wp-content/themes/zibll/inc/options/admin-options.php这个文件
大概是在 9622 到 9633行 的 内容,替换为下面代码
array(
'id' => 'ip_addr_sdk',
'default' => 'null',
'title' => 'IP归属地接口选择',
'type' => "radio",
'inline' => true,
'options' => array(
'polling' => __('轮流查询', 'zib_language'),
'qq' => __('腾讯位置服务', 'zib_language'),
'amap' => __('高德位置服务', 'zib_language'),
'cz' => __('本地纯真数据库接口(无需配置)', 'zib_language'),
'null' => __('太平洋网络公共接口(无需配置)', 'zib_language'),
),
大概是在 9686 到 9697行 的 内容,替换为下面代码
array(
'content' => '<div><b>填写配置并保存主题配置后可在此测试接口</b></div>
<ajaxform class="ajax-form" ajax-url="' . admin_url('admin-ajax.php') . '">
<div class="flex ac hh">
<select class="mt6 mr10" ajax-name="sdk"><option value="">太平洋网络公共接口</option><option value="cz">本地纯真数据库</option><option value="qq">腾讯位置服务</option><option value="amap">高德位置服务</option></select>
<input class="mt6 mr10" type="text" style="max-width:300px;" ajax-name="ip" placeholder="输入一个IP地址或留空"><a href="javascript:;" class="but jb-yellow ajax-submit mt6"><i class="fa fa-paper-plane-o"></i> 测试一下</a></div>
<div class="mt10 ajax-notice"></div>
<input type="hidden" ajax-name="action" value="test_ip_addr_sdk">
</ajaxform>',
'style' => 'warning',
'type' => 'submessage',
),
使用教程
如果,你已经完成上面的操作后,就可以使用了,方法是到你的子比主题设置,到->扩展&增强/ip归属地,就可以看到有一个
- 一定要完成上面的操作,并且把支持库和qqwry.dat 文件复制好!
- 如有什么问题,请在评论区指出
效果展示