WordPress在网站会员信息页面添加一个会员IP展示地址,此功能在很多网站都已经添加,能更好的了解会员的相关动态及信息,有需要的自己测试使用。此次使用B2主题进行操作演示其他主题都大同小异。
使用教程:
1、下载WP-IPUA插件,打开/wordpress/wp-content/plugins/wp-ipua/helper.php,添加下面的代码
function get_user_ip_address() {
ob_start();
$user_id = get_query_var('author'); // 获取用户ID
// 获取用户的最后登录IP
$last_login_ips = get_user_meta($user_id, 'last_login_ip', true);
// 初始化最终的 IP 地址列表
$final_ips = [];
// 判断是否包含方括号,如果是则直接提取 IPv6 地址
if (strpos($last_login_ips, '[') !== false && strpos($last_login_ips, ']') !== false) {
preg_match('/\[(.*?)\]/', $last_login_ips, $matches);
$final_ips[] = $matches[1];
} else {
// 按逗号分割 IP 地址
$ips = explode(',', $last_login_ips);
$first_ip = trim($ips[0]);
// 判断是否为 IPv6 地址,如果是则直接取该 IPv6 地址
if (strpos($first_ip, ':') !== false && filter_var($first_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$final_ips[] = $first_ip;
} elseif (strpos($last_login_ips, ',') !== false) {
// 如果值中包含逗号,而第一个 IP 不是 IPv6 地址,提取逗号分隔的第一个 IPv4 地址
foreach ($ips as $ip) {
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$final_ips[] = $ip;
break;
}
}
} elseif (strpos($first_ip, ':') !== false) {
// 没有逗号,但第一个 IP 包含冒号(可能是带端口的 IPv4 地址)
$final_ips[] = strstr($first_ip, ':', true) ?: $first_ip;
}
}
// 获取第一个IP地址
$first_ip = trim($final_ips[0]);
// 判断是否有IP地址
if (!empty($first_ip)) {
// 创建一个 IP 对象
$ips_instance = new IP($first_ip);
// 获取 IP 归属地信息
$ip_info = $ips_instance->get_ip_info();
// 判断是否成功获取归属地信息
if (!empty($ip_info)) {
// 构建归属地字符串,根据您的需求选择合适的格式
$location_string = $ip_info['nation'] . ' ' . $ip_info['province'] . ' ' . $ip_info['city'];
echo $location_string;
} else {
echo 'IP未知';
}
} else {
echo '用户最近未登录过';
}
return ob_get_clean();
}
2、打开/wordpress/wp-content/themes/b2/User/index.php,其他主题在合适的地方添加下面代码
<p class="b2-pd">
<span class="user-info-title">位置:</span>
<span class="b2-hover">
<?php echo get_user_ip_address(); ?>
</span>
</p>
并在第三行添加
use function HaoZiTeam\IPUA\get_user_ip_address;
3、保存文件,并修改插件相关设置即可
此插件支持腾讯在线获取和纯真IP库离线获取,支持UA,支持IPv6。
感谢您的来访,获取更多精彩文章请收藏本站。
© 版权声明
THE END
暂无评论内容