如何为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