有时候,正是那些人们认为的无用之人成就了无人能成之事。Sometimes it’s the very people who no one imagines anything of who do the things no one can imagine.

——艾伦·麦席森·图灵

在线获取

PS:在线获取可能会拖慢页面的加载速度,所以建议使用下面的API接口

免费API接口

67IP查询接口:https://67ip.cn/check (超过3次日调用量大于1万的账户将停止接口调用权限)

后续将会专门在一篇文章中分享一系列的接口

请求方式为GET,返回是json格式。

/**
* json返回示例
{
    "code":200,
    "message":"success",
    "data":{
        "country":"中国",
        "province":"辽宁",
        "city":"鞍山",
        "service":"联通"
    }
}
**/

添加PHP代码

将下面的代码添加到主题的functions.php文件中,并且做好注释,防止下次更改时遗忘

/**
* WordPress 显示评论者IP归属地PHP函数
* https://blog.eswlnk.com/326.html
**/
function get_locate($ip) {
    if(empty($ip)) $ip = get_comment_author_IP();
    $ch = curl_init();  
    $timeout = 5;  
    curl_setopt ($ch, CURLOPT_URL, 'https://67ip.cn/check?ip='.$ip.'&token=你的token');  
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
    $file_contents = curl_exec($ch);  
    curl_close($ch);  
    $result = json_decode($file_contents,true);
    if ($result['data']['country'] != '中国') {
        return $result['data']['country'];
    } else {
        return $result['data']['province'];
    }
}

然后在comments.phpcomment.php文件中添加以下函数调用

<?php echo get_locate(get_comment_author_ip());?>

具体的位置根据主题的评论位置而定,方便的话可以在comments.phpcomment.php搜索以下代码

<?php wp_list_comments( 'type=comment&callback=mytheme_comment' ); ?>

callback后的对应主题评论的回调函数,搜索到后跳转然后添加get_locate函数即可

这里我只添加了评论者的省份,下面是评论后的示例图

WordPress如何在评论栏添加评论者IP归属地插图
评论添加归属地