本来这里很少有评论,但是来自日语或者英语的垃圾评论却非常多,可以用wordpress自带的过滤功能禁止其中的完全英语的垃圾评论,但是没有办法禁止日语的,甚至其他各种语言的,在网络上面发现有人使用计算加法作校验的方式来屏蔽来解决。因为垃圾评论都是用“机器人”发出的,他们不可能去分析评论的额外接口。利用wordpress提供的comments的两个回调即可实现。
在网上下载了插件的代码,稍作了修改。
修改步骤:
1、将如下文件解压缩后放到wordpress的如下目录中:$wordpress-root-path\wp-content\plugins,形成$wordpress-root-path\wp-content\plugin\comment_capatcha.php的目录结构。粗体部分替换成你的wordpress安装的根目录。这个过程实际上相当于安装了一个新的插件。
下载链接:http://codefine.site/wp-content/uploads/2013/08/comment_capatcha.zip
这里也把代码贴出来:
<?php
/*
Plugin Name: 简单算术题评论验证码插件
Plugin URI: http://www.utubon.com/wordpress-plugin-comment-capatcha-figure/
Description: 提交评论之前必须写出简单的算术题答案
Version: 1.0
Author: 否子戈
Author URI: http://www.utubon.com
*/
if(!class_exists('comment_capatcha')) {
class comment_capatcha {
function __construct() {
add_action('comment_form', array(& $this, 'print_capatcha'));
add_filter('preprocess_comment', array(& $this, 'preprocess_comment'));
}
function print_capatcha() {
if(!is_user_logged_in()) {
global $post;
session_start();
$rand_1 = mt_rand(1,6);
$rand_2 = mt_rand(1,6);
$_SESSION['capatcha_'.$post->ID] = $rand_1 + $rand_2;
$str = '<div id="capatcha-area"><label>';
$str .= "{$rand_1} + {$rand_2} = ".'<input type="text" size="2" name="capatcha" id="capatcha" />';
$str .= 'Result<span class="required">*</span>';
$str .= '</label></div>';
$str .= '<br>';
echo $str;
}
}
function preprocess_comment($commentdata) {
if(!is_user_logged_in()) {
session_start();
$post_id = isset($_POST['comment_post_ID']) ? $_POST['comment_post_ID'] : 0;
if(!$post_id){
wp_die('数据来源非法。');
}
$capatcha = $_SESSION['capatcha_'.$post_id];
if($capatcha != $_POST['capatcha']){
wp_die( __('请返回后重新输入算数题答案!') );
}
unset($_SESSION['capatcha_'.$post_id]);
}
return $commentdata;
}
}
}
if( !isset($comment_capatcha) ) {
$comment_capatcha =& new comment_capatcha();
}
?>
2、修改算术计算行所放的位置
我的主题默认是放在提交按钮之上,评论内容之后,可以移动到评论内容之前,作如下修改即可:(图片较小,点击后可以在新窗口查看大图)
移动doaction函数的调用点即可修改算术框的位置。
3、到插件管理页面开启插件:简单算术题评论验证码插件
本站修改实现之后的效果为: