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

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

       今天博主在逛其他博客的时候,发现有好多博主的侧边栏都有个显示访问者 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 地址并解析成地理位置
喜欢 (5)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址