垃圾评论,如今可以说是无处不在,作为WordPress使用者的我们,防止垃圾评论的侵扰是必须要做的。而且垃圾评论也就算了,居然还不访问我们的网站直接用脚本刷,连个pv值都不贡献下,太抠啦,不走心,差评。
在屏蔽垃圾评论方面,Akismet插件还是很不错的,能起到一定的效果。但还是不够给力,而且认证还要收费,建议大家还是放弃使用吧,其他的一些插件也是坑的要死,接下来的教程就可以基本杜绝垃圾评论了。
方法1:评论黑名单加强版(推荐)
wordpress有个“评论黑名单”功能,这个功能在 wordpress后台-“讨论”菜单里面,我非常喜欢这个功能。它的作用是:当评论的内容、评论者名称、URL、电子邮件或IP地址中包含其中任何关键字时,系统将自动将评论标记为“垃圾评论”。但有个不好的地方是评论者的评论还是能提交上来,你必须手动去清理这些“垃圾评论”…
下面的方法就是弥补这个缺陷的,当评论的内容、评论者名称、URL、电子邮件或IP地址中包含其中任何关键字时(当然,这些关键字需要你自己去设置好~),评论将不能提交!
将以下代码扔到我们的主题的 functions.php 中
function shsongjiang_fuck_spam_comments($comment) {
if (wp_blacklist_check($comment[‘comment_author’], $comment[‘comment_author_email’], $comment[‘comment_author_url’], $comment[‘comment_content’], $comment[‘comment_author_IP’], $comment[‘comment_agent’])) {
header(“Content-type: text/html; charset=utf-8”);
err(__(‘不好意思,您的评论违反了龙笑天下的评论规则!’));
} else {
return $comment;
}
}
add_filter(‘preprocess_comment’, ‘shsongjiang_fuck_spam_comments’);
效果:请在本页评论“婊子”试试~~
方法2:评论中必须有中文
屏蔽纯英文或纯日文评论,评论中必须含有中文:
function shsongjiang_refused_spam_comments($comment_data) {$pattern = ‘/[一-龥]/u’;$jpattern = ‘/[ぁ-ん]+|[ァ-ヴ]+/u’;if (!preg_match($pattern, $comment_data[‘comment_content’])) {err(__(‘来一波汉字吧,苦逼的博主只认识汉字!You should type some Chinese word!’));}if (preg_match($jpattern, $comment_data[‘comment_content’])) {err(__(‘原谅博主吧,这货只听得懂岛国神片的一两句雅蠛蝶! You should type some Chinese word!’));}return ($comment_data);}add_filter(‘preprocess_comment’, ‘shsongjiang_refused_spam_comments’);
方法3:屏蔽昵称,评论内容带链接的评论
function shsongjiang_Shield_link($comment_data) {$links = ‘/http:\/\/|https:\/\/|www\.|\.com|\.cn|\.net|\.org/u’;if (preg_match($links, $comment_data[‘comment_author’]) || preg_match($links, $comment_data[‘comment_content’])) {err(__(‘别啊,昵称和评论里面添加链接会怀孕的哟!!’));}return ($comment_data);}add_filter(‘preprocess_comment’, ‘shsongjiang_Shield_link’);
方法4:屏蔽长链接评论
当评论者链接长度大于50个字符时,评论将被当作垃圾评论。
function shsongjiang_lang_url_spamcheck($approved, $commentdata) {return (strlen($commentdata[‘comment_author_url’]) > 50) ?‘spam’ : $approved;}add_filter(‘pre_comment_approved’, ‘shsongjiang_lang_url_spamcheck’, 99, 2);
方法5:设置一个发送评论前需要勾选的选择框
我们通常使用的防机器人的方式是增加验证码,如:数字字母验证码、算术验证码等,在这里介绍的是添加一个发送评论前需要勾选的选择框,来判断是否人工。
首先,在你的评论模板页面的适当位置加入下面的代码,一般是在comments.php这个文件中。
<label for=“enable”><input type=“checkbox” name=“enable” id=“enable” onClick=“apply()” class=“enable_checkbox”> Check this box to enable the send button</label>
然后,引入下面的JS代码:
<script type=“text/javascript”>function apply() {var form_submit = document.commentform.submit;var form_checkbox = document.commentform.enable;form_submit.disabled=true;if(form_checkbox.checked==true) {form_submit.disabled=false;}if(form_checkbox.checked==false) {form_submit.enabled=false;}}</script>
方法6:禁止不访问网站页面直接评论
很多机器人和恶意评论的人为什么可以不访问网站的任何页面,却能留下评论回复呢?Spam的原理其实很简单:发表评论是由wp-comments-post.php文件执行完成的,只要机器人确定你的网站是WordPress搭建,通过软件直接读取网站根目录下的wp-comments-post.php,并写入内容即可完成,无需访问网站的任何页面。
那么,怎么预防这种形式的垃圾评论呢?下面有2种方法。
① 通过修改.htaccess文件判断评论来路是否是通过网站的页面读取wp-comments-post.php文件的,如果否则禁止写入。在.htacess 中加入以下代码:
# Protect from spam comments By ILXTX.COMRewriteEngine OnRewriteCond %{REQUEST_METHOD} POSTRewriteCond %{REQUEST_URI} .wp–comments–post.php*RewriteCond %{HTTP_REFERER} !.*shsongjiang.com.* [OR]RewriteCond %{HTTP_USER_AGENT} ^$RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
注:不要忘记替换 shsongjiang.com 为你的域名哦
转载请注明:令升网络 » 如何屏蔽WordPress垃圾评论