WordPress会员信息页添加用户IP归属地

WordPress在网站会员信息页面添加一个会员IP展示地址,此功能在很多网站都已经添加,能更好的了解会员的相关动态及信息,有需要的自己测试使用。此次使用B2主题进行操作演示其他主题都大同小异。

WordPress会员信息页添加用户IP归属地-彩豆博客

使用教程:

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
喜欢就支持一下吧
点赞101 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容