本文介绍当使用 WP Open Social 插件时无法获取完整的 IPv6 地址造成的评论归属地显示异常。
问题分析
在使用 WP Open Social 插件时发现,若访客是通过IPv6协议访问,在评论时会获取不到完整的IPv6地址,仅只显示前缀,例如:2408,导致评论处的归属地显示造成异常。


修改建议
我们需要修改open-social.php文件open_social_extend_proxy_ip函数,注释截断 IPv6 地址的正则表达式替换操作。
修改步骤
修改后的代码
function open_social_extend_proxy_ip(){
$user_ip = sanitize_text_field($_SERVER['REMOTE_ADDR']);
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) $user_ip = sanitize_text_field($_SERVER['HTTP_X_FORWARDED_FOR']);
if(!empty($_SERVER['X_FORWARDED_FOR'])) $user_ip = sanitize_text_field($_SERVER['X_FORWARDED_FOR']);
// 注释截断 IPv6 地址的正则表达式替换操作
// $user_ip = preg_replace('/[^0-9\.].*$/', '', $user_ip);
return preg_replace('/[^0-9a-f:\., ]/si', '', $user_ip);
}

验证修改
在完成上述修改后,发表一条评论,这时再检查数据库就可以看到评论者完整显示的 IP 地址。

本页面最后更新于:2025-06-15,距今已 503 天,若有链接失效或教程无效,欢迎留言反馈。




return preg_replace('/[^0-9a-f:\., ]/si', '', $user_ip);
return preg_replace('/[^0-9a-f:\., ]/si', '', $user_ip);
return preg_replace('/[^0-9a-f:\., ]/si', '', $user_ip);