WordPress如何获取当前访问者的ip地址并解析成地理位置

Wordpress IT敢客 9个月前 (07-16) 3401次浏览 已收录 12个评论 扫描二维码

       今天博主在逛其他博客的时候,发现有好多博主的侧边栏都有个显示访问者 IP 信息的地方,也还有显示地理位置的信息,看我也心里想要这个功能。于是就开始找了半天,发现网站的许多 wordpress 获取访问者 IP 的都不行!于是最后自己找了一个如下的代码,可以完全实现,将下面的代码放在主题 functions.php 里面即可。

//显示访客所在地
function get_the_user_ip(){
    if(!empty($_SERVER["HTTP_CLIENT_IP"]))
    {
        $cip = $_SERVER["HTTP_CLIENT_IP"];
    }
    else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
    {
        $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    }
    else if(!empty($_SERVER["REMOTE_ADDR"]))
    {
        $cip = $_SERVER["REMOTE_ADDR"];
    }
    else
    {
        $cip = '';
    }
    preg_match("/[\d\.]{7,15}/", $cip, $cips);
    $cip = isset($cips[0]) ? $cips[0] : 'unknown';
    unset($cips);
    return $cip;
}

如果要显示出 ip 可以用下面的语句:

<?php echo get_the_user_ip();?>
如果是函数内部调用就
$ip = get_the_user_ip();

然后如果想显示出 ip 的地理位置,这个就需要其他第三方 api 来实现了,我用的是高德开放平台的 api,还可以!代码如下了!

function wp_gaode_map_remote_request($url, $method='get', $body=''){
    if($method == 'get'){
        $args = array('headers' => array('Accept-Encoding'=>''), 'sslverify'=>false, 'body'=>$body);
        $response = wp_remote_get($url, $args);
    }elseif($method == 'post'){
        $args = array('headers' => array('Accept-Encoding'=>''), 'sslverify'=>false, 'body'=>$body);
        $response = wp_remote_post($url, $args);
    }
    if(is_wp_error($response)){
        return false;
    }
    $response = json_decode($response['body']);

    if(!empty($response->error)){
        return false;
    }
    return $response;
}
function wp_getLocation($ip=''){
    $ip = get_the_user_ip();
    if($ip=="127.0.0.1") {
        return "本机地址";
    }
    $url = "https://restapi.amap.com/v3/ip?ip=". $ip ."&output=json&key=高德 api 的 key";
    $response = wp_gaode_map_remote_request($url);
    if(!$response){
        return false;
    }
    $data = '';

    $data .= $response->province;
    $data .= $response->city;
    return $data;
}

然后在你想要展示的地方用下面的语句展示出来;

<?php echo wp_getLocation();?>
如果是函数内部调用就
$location = wp_getLocation();

下面就展示一下本博主的显示了!

Wordpress 如何获取当前访问者的 ip 地址并解析成地理位置


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:WordPress 如何获取当前访问者的 ip 地址并解析成地理位置
喜欢 (11)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(12)个小伙伴在吐槽
  1. 晕了 又申请一个居然好了
    nzh2019-03-31 17:48 回复 Windows 10 | Chrome 70.0.3538.67
    • IT敢客
      大概是设置的问题吧
      IT敢客2019-03-31 18:04 回复 Android 7.1.2 | Chrome 73.0.3683.90
      • 应该是 日常玄学
        nzh2019-03-31 18:14 回复 Windows 10 | Chrome 70.0.3538.67
  2. 哥 我知道了 伸手伸的太快了忘记申请api了
    nzh2019-03-31 16:32 回复 Windows 10 | Chrome 70.0.3538.67
    • IT敢客
      api这个要自己申请的,我的设置了域名限制而已,你用不了我的,嘿嘿😁
      IT敢客2019-03-31 16:44 回复 Android 7.1.2 | Chrome 73.0.3683.90
      • 哼哼 话说我申请的js api为什么也没用0.0
        nzh2019-03-31 17:18 回复 Windows 10 | Chrome 70.0.3538.67
        • IT敢客
          先找ip单独试试api行不行
          IT敢客2019-03-31 17:20 回复 Android 7.1.2 | Chrome 73.0.3683.90
          • 好嘞
            nzh2019-03-31 17:26 Windows 10 | Chrome 70.0.3538.67
          • 10009 那申请什么啊 web和js都是10009
            nzh2019-03-31 17:46 Windows 10 | Chrome 70.0.3538.67
  3. 为什么现在地理位置不显示了啊
    nzh2019-03-30 23:54 回复 Windows 10 | Chrome 70.0.3538.67
    • IT敢客
      有缓存,偶尔不显示!
      IT敢客2019-03-31 07:05 回复 Android 7.1.2 | Chrome 73.0.3683.90
      • 问题我没开缓存啊 :grin:
        nzh2019-03-31 16:15 回复 Windows 10 | Chrome 70.0.3538.67