如何为wordpress添加评论验证码?

如何为wordpress添加评论验证码?

WordPress 3.0 新增了comment_form() 函数来构建评论表单,下面简单讲解一下 comment_form() 的使用方法,希望能帮助大家自定义评论表单。

如果需要在页面中引用评论功能。只需在合适地方使用下面代码即可

<?php comment_form(); ?>

添加验证码字段,我们需要使用到 comment_form() 钩子。
在管理后台选择外观->主题编辑器,将下面代码复制到你的functions.php文件最下方,如下图:
评论添加验证码
代码在下面,效果可以参考本文最下方的评论区域。

/*
评论验证码 -------begin
*/
//评论添加验证码
function spam_protection_math($fields){
    $num1=rand(0,9);
    $num2=rand(0,9);
    $fields['spam'] = "<label for='math'>请输入 $num1 + $num2 = ? 的计算结果:</label>\n" . "<input class='text' tabindex='4' name='comment_sum' size='25' type='text' value='' />\n" . "<input name='comment_num1' type='hidden' value='$num1' />\n" . "<input name='comment_num2' type='hidden' value='$num2' /></p>";
    return $fields;
}
function spam_protection_pre($commentdata){
    $sum=$_POST['comment_sum'];
    switch($sum){
        case $_POST['comment_num1']+$_POST['comment_num2']:
        break;
        case null:
        wp_die('对不起: 请输入验证码。返回上一页','评论失败');
        break;
        default:
        wp_die('对不起: 验证码错误,请返回重试。','评论失败');
    }
    return $commentdata;
}
if($comment_data['comment_type']==''){
    add_filter('preprocess_comment','spam_protection_pre');
}
add_filter('comment_form_default_fields','spam_protection_math');
/*
评论验证码 -------end
*/

comment_form() 还有其他一些相关的勾子,如果有兴趣可以自己验证看下效果 :

comment_form_before
comment_form_must_log_in_after
comment_form_top
comment_form_logged_in_after
comment_notes_before
comment_form_before_fields
comment_form_field_{$name}
comment_form_after_fields
comment_form_field_comment
comment_form (action hook)
comment_form_after
comment_form_comments_closed

发表评论

电子邮件地址不会被公开。 必填项已用*标注