原创内容,转载清注明出处:https://www.myzhenai.com.cn/post/1875.html https://www.myzhenai.com/thread-16324-1-1.html
这个方法的前提是安装了akismet过滤插件,我的思路是这样的,因为WordPress的垃圾回复比较多,就算安装了akismet拦截也有好多被写入数据库,所以就想着有没有方法把这些垃圾回复的IP提取出来,然后用iptables封禁掉.这样一来就可以减少Mysql数据库的读写和降低服务器的资源占用.一直以来我以为这个功能需要在akismet中更改代码,但是在一朋友的提示下才知道这个是WordPress的内置功能.我们需要用到的函数是 get_comment_author_IP() 这个在官方文本中的注释是返回评论者IP.但是WordPress里还有一个comment_author_IP()函数也能获取评论者IP,但是我们在这里添加却没有办法获得它的返回值,所以要用 get_comment_author_IP(). 我们将下边的代码添加到 /wp-admin/includes/class-wp-comments-list-table.php这个文件中,在comment_author_IP();下边插入代码保存并上传覆盖原文件即可.修改前请先备份这个文件.
$aip = get_comment_author_IP(); /** 得到ip地址 */ $txt = file_get_contents("/spam.log"); /** 对比ip地址是否存在文件内,防止重复输入 */ if (strpos($txt,$aip) === false) /** 如果文件内找不到这个ip地址 */ { $handle = fopen("/spam.log","a+"); /** 打开文件并得到一个句柄,据说a+是写入? */ fwrite($handle,$aip."/n"); /** 将获得的ip地址添加到文件中 */ } fclose($handle); /** 关闭句柄 */
本来我想将代码添加到当前主题中的评论模块comments.php文件中的,但因为我还搞不懂如何判断是否为垃圾回复,为了避免所有回复用户的IP都被收录过滤,所以暂时先不把它加到这个文件中了. 我查找了WordPress官方文档,好像用wp_allow_comment()和wp_get_comment_status()还有wp_blacklist_check()这三个函数可以判断是否为垃圾回复,但是因为我还不懂得如何写这些代码的参数.所以先不弄了,如果您懂得的,欢迎您指点,谢谢了.
sicnature ---------------------------------------------------------------------
I P 地 址: 18.117.166.52
区 域 位 置: 美国马萨诸塞
系 统 信 息:
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普 | 海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source https://myzhenai.com/post/1875.html
1 评论
新版的wordpress 是添加在
这行下面.