解决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
-
解决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