我写了个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() 判断,防止插件未启用时主题报错。

说明结束


下载地址:

  1. yue-location Version 1.2 (2026-04-17)

欢迎测试和使用,有疑问可评论留言,以便我把她做的更好的呦!

评论