虽然 WordPress 自带了强大的垃圾留言过滤插件 Akismet(点击这里查看 Akismet 终极攻略),但是只能治标不治本,无法彻底屏蔽铺天盖地的垃圾信息。所以,我们得出绝招,为你的主题添加算数验证码吧!

网上找了很多教程,不过步骤都很类似,总结大致方法如下:

第一步,把以下函数添加到主题的 functions.php 文件中

function spam_protection_math(){
    //获取两个随机数, 范围 5~15
    $num1=rand(5,15);
    $num2=rand(5,15);
    //最终网页中的具体内容
    echo"<fieldset id='math'>"
        ."$num1 + $num2 = <input type='text' name='sum' id='sum' value='' tabindex='9'>"
        ."<input type='hidden' name='num1' value='$num1'>"
        ."<input type='hidden' name='num2' value='$num2'>"
        ."</fieldset>";
}
function spam_protection_pre($commentdata){
    $sum=$_POST['sum'];//用户提交的计算结果
    switch($sum){
        //得到正确的计算结果则直接跳出
        case $_POST['num1']+$_POST['num2']:break;
        //未填写结果时的错误讯息
        case null:wp_die('Error: please fill the math spam protection field.');break;
        //计算错误时的错误讯息
        default:wp_die('Error: in case of a wrong answer.');
    }
    return $commentdata;
}
if($comment_data['comment_type']==''){
    add_filter('preprocess_comment','spam_protection_pre');
}

第二步,到评论文件 comments.php 中添加如下代码:

<?php if(!is_user_logged_in())spam_protection_math();?>

最后定义一下 「row」 、 「math_textfield」 、 「small」 的 CSS 属性即可。