我写了个wordpress版IP归属地插件“悦·Location”
上次因为“百度统计”付费,并且非VIP用户无法查询较长时间跨度的统计信息,于是最近WorkBuddy有几点积分,写了个简单的网站浏览量统计插件,虽然问题比较多,但是我找到了一个非常好用的IP数据库,包含IPv4和IPv6的查询资源,我想着,用在网站流量统计上岂不是有一点浪费,我要不写个wordpress的插件,用来展示评论者的归属地,也可以插入到正文标签中,展示博主的发布地点,于是就有个这个wordpress 的插件。
至于为什么叫“悦·Location”,我把最近写的所有的小玩意都以“悦”起名吧,代表一个系列,出自我手。
“悦·Location插件”是基于 ip2region 离线IP归属地数据库, 支持 IPv4 & IPv6 自动识别,可在正文和评论区展示博主或者评论访客的IP归属情况。
“悦·Location插件”功能非常丰富,可玩性也很高,针对不会折腾博客新手还是折腾博客的老手,使用非常简单:上传插件->启用插件->设置插件,三步完成。

“悦·Location插件”功能详细,配置非常丰富。

里面也有非常详细的使用说明,包括大佬可以自定义IP的显示位置、显示方式以及函数的调用方式,插件的配置页面下方的使用说明非常清晰明了。
当然这个开源免费的,大家可随便修改和使用,只要符合MIT License,可自由使用、修改、分发,保留原作者署名即可。
插件因为使用了离线数据库,因此插件的体积比较大。下载地址我临时放博客了, 如果下载量大,影响到博客访问速度时,我附网盘分享链接。
以下是使用说明:
📝 重要提示
在主题中调用插件函数时,请务必使用 function_exists() 判断函数是否存在,避免插件未启用时导致主题报错。
一、评论归属地显示
1.1 自动显示模式(推荐)
在”功能开关”中开启 前台评论自动显示 后,插件会自动在评论者名称后追加IP归属地,无需修改主题代码。
1.2 手动调用函数
如需更灵活地控制显示位置,可使用以下全局函数:
| 函数 | 说明 |
|---|---|
Yue_get_location( $ip ) | 查询并返回格式化后的归属地 HTML 字符串。参数为 IP 地址字符串,返回包含图标和样式的完整 HTML。 |
the_Yue_location( $ip ) | 直接输出归属地 HTML(等同于 echo Yue_get_location( $ip ))。 |
Yue_get_location_by_comment( $comment ) | 根据评论对象或评论ID,自动提取IP并返回格式化后的归属地 HTML。 |
Yue_get_location_raw( $ip ) | 查询并返回原始归属地数据数组,包含 country、province、city、isp、iso、is_v6 字段。适合自定义格式化。 |
1.3 代码示例
示例1:在评论模板中显示归属地
<?php if ( function_exists( 'the_Yue_location' ) ) : ?>
<span class="comment-author">
<?php comment_author(); ?>
<?php if ( function_exists( 'the_Yue_location' ) the_Yue_location( get_comment_author_IP() ); ?>
</span>
<?php endif; ?>
示例2:获取原始数据并自定义格式
<?php if ( function_exists( 'Yue_get_location_raw' ) ) ?>
<?php
$loc = Yue_get_location_raw( get_comment_author_IP() );
if ( $loc ) {
echo esc_html( $loc['country'] . ' ' . $loc['province'] . ' ' . $loc['city'] );
}
?>
<?php endif; ?>
示例3:根据评论对象显示归属地
<?php if ( function_exists( 'Yue_get_location_by_comment' ) ) ?>
<?php
// 传入评论对象
$comment = get_comment();
echo Yue_get_location_by_comment( $comment );
?>
<?php endif; ?>
二、文章/页面发布者定位
开启“文章/页面发布者定位”功能后,插件会在文章首次发布时自动记录发布者的IP归属地信息。
2.1 可用函数
| 函数 | 说明 |
|---|---|
Yue_get_post_location( $post ) | 获取指定文章的发布者归属地 HTML。参数为文章ID或对象,默认当前文章。 |
the_Yue_post_location( $post ) | 直接输出文章的发布者归属地 HTML(等同于 echo)。 |
2.2 代码示例
示例1:在文章 meta 区域显示发布者位置
<?php if ( function_exists( 'the_Yue_post_location' ) ) ?>
<div class="entry-meta">
<span class="posted-on"><?php the_date(); ?></span>
<span class="comments-link"><?php comments_popup_link(); ?></span>
<?php the_Yue_post_location(); ?>
</div>
<?php endif; ?>
示例2:获取原始的 post_meta 数据
<?php
// 读取完整的预存数据
$data = get_post_meta( get_the_ID(), '_Yue_location_data', true );
if ( $data ) {
echo 'IP: ' . esc_html( $data['ip'] );
echo ' 国家: ' . esc_html( $data['location']['country'] );
}
// 仅读取格式化后的文本
$text = get_post_meta( get_the_ID(), '_Yue_location_text', true );
if ( $text ) {
echo '发布于 ' . esc_html( $text );
}
?>
2.3 功能说明
- 存储机制:归属地在发布时一次性查询并存入
_Yue_location_data、_Yue_location_text等 post_meta 字段中。 - 标签写入:同时以 📍 前缀标签形式(如”📍中国”、”📍广东”)写入文章标签,方便归档和搜索。
- 性能优化:前台读取的是缓存数据,不产生额外的IP查询开销。
- 仅首次生效:同一篇文章仅在首次发布时记录一次,后续更新不再修改归属地(避免编辑覆盖原始发布地点)。
三、样式定制
插件提供灵活的样式定制选项:
- 默认样式:在”性能与样式”中可以开启或关闭默认CSS输出。
- 自定义CSS:开启”开启自定义CSS”后,可在下方文本框中输入自定义样式代码。
- 独立控制:默认样式和自定义CSS相互独立,可同时使用或单独使用。
可自定义的CSS类名:
.yue-location– 归属地容器.yue-icon– 图标样式.yue-ipv6-badge– IPv6标识标签.yue-author-wrapper– 作者名称包裹容器.yue-post-location– 文章发布者归属地.yue-post-location-meta– 文章meta区域容器
四、注意事项
- 所有函数均自动识别 IPv4 / IPv6,无需手动判断。
- 归属地数据来自离线 ip2region 数据库(
ip2region_v4.xdb和ip2region_v6.xdb),无需联网。 - 数据格式为:国家 | 省份 | 城市 | ISP | ISO国家代码。
- 关闭”前台评论自动显示”后,自动追加功能停用,但通用函数仍可正常使用。
- 修改主题模板时,请备份原有文件,建议使用子主题进行定制。
- 在主题中调用插件函数时,务必使用
function_exists()判断,防止插件未启用时主题报错。
说明结束
下载地址:
- yue-location Version 1.2 (2026-04-17)
欢迎测试和使用,有疑问可评论留言,以便我把她做的更好的呦!
评论