解决Sakurairo主题(因为反向代理)无法获取评论IP的问题 #1002
citrusreticulata
started this conversation in
Show and tell
Replies: 1 comment 1 reply
-
|
|
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
解决Sakurairo主题(因为反向代理)无法获取评论IP的问题
问题起因
搜索了一下历史issues,发现有提过评论区IP信息不能正常解析的问题:issue #820
最后issue关闭并且附上了“但这些功能应该不属于也不该属于这个主题的功能范围”
但是这就尴尬了,因为我这个功能也没成功展示过("▔□▔)/全部都显示的是“
来自: Reserved Address”这主要是因为我的网站不仅有博客流量,还有其他流量(例如实用工具等),而我又懒得配三级域名(
其实是没整成功)转发,所以就用反向代理做了流量转发,这就导致Wordpress收到的数据中间挂了一层nginx代理。解决问题
不过,我解决了这个问题!
虽然它确实不应该作为一个主题的issue提出来,不过我觉得在discussion里面分享一下解决方案应该没问题吧( σ'ω')σ
可以戳戳我写的小帖子解决Sakurairo主题无法获取评论IP的问题~当然也是用的Sakurairo主题,好耶
具体来说呢是这么个事。因为我用到的其他插件,是能正确获取挂了反向代理的IP的,所以我就首先怀疑是主题这边的问题,于是去读了主题的代码,一开始误以为是由主题
functions.php中提供的get_the_user_ip()函数实现了IP获取,结果这个函数写的非常简洁优美,没啥毛病,我就懵了:问题在哪呢?后面才发现,Sakurairo主题获取评论的IP并非使用的该接口,而是在IpLocation.php中,通过底层框架中的get_comment_author_IP()函数来直接读取存储的IP信息。所以,框架提供的IP本就没有处理代理信息,主题获取的存储值又怎么可能正确呢?
那么现在解决思路就显而易见了:让框架的API处理代理信息。
所以,我就顺藤摸瓜找到了
/wp-includes/comment.php文件中具体存储评论IP的逻辑,找到这段代码:然后把它修改成这样:
问题就解决了!ヾ(≧▽≦*)o
好耶,皆大欢喜。顺带一提,某些帖子中提到的在wp-config.php中添加
$client_ip解析的方法,在当前的问题中不能解决解析问题。详情可以戳戳我写的小帖子[]~( ̄▽ ̄)~*Beta Was this translation helpful? Give feedback.
All reactions