wordpress手动添加评论算术验证码


网上找了好多,终于找到一个能用的,声明:本人的原则是能不用插件就不用插件!这次wordpress的HotnewsPro主题手动添加评论算术验证码只需修改主题中两个文件即可!

1、打开主题目录下的functions.php,在最后的“?>”代码前添加以下函数代码,直接粘贴进去:

function spam_protection_math(){
  //获取两个随机数, 范围0~50,可修改
  $num1=rand(0,50);
  $num2=rand(0,50);
  //最终网页中的具体内容
  echo"<div class='row'>"
    ."<label for='math' class='small'>验证码: </label>"
    ."$num1 + $num2 = <input type='text' name='sum' class='math_textfield' value='' tabindex='1'>"
    ."<input type='hidden' name='num1' value='$num1'>"
    ."<input type='hidden' name='num2' value='$num2'>"
    ."</div>";
 
}
function spam_protection_pre($commentdata){
  $sum=$_POST['sum'];//用户提交的计算结果
  switch($sum){
    //得到正确的计算结果则直接跳出
    case $_POST['num1']+$_POST['num2']:break;
    //未填写结果时的错误讯息
    case null:err('请在提交前填写计算结果!');break;
    //计算错误时的错误讯息
    default:err('你居然算错了!');
  }
  return $commentdata;
}
if(!is_user_logged_in() && $comment_data['comment_type']==''){
  add_filter('preprocess_comment','spam_protection_pre');
}

2、打开主题目录下的comments.php,在适当位置(但要在“提交”按钮前)添加调用代码即可:

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

我的是添加到留言内容框框的下面的,看部分代码:

<div class="clear"></div>
		<p><textarea name="comment" id="comment" tabindex="4"></textarea></p>
		<?php if(!is_user_logged_in())spam_protection_math();?>//添加到评论框后面,且要在“提交留言“前面
		<p>
			<?php if (get_option('swt_smiley') == '关闭') { ?>
			<?php { echo ''; } ?>
			<?php } else { include(TEMPLATEPATH . '/includes/smiley.php'); } ?>
		</p>
		<div class="submitted">
			<input class="submit" name="submit" type="submit" id="submit" tabindex="5" value="提交留言"/>
			<input class="reset" name="reset" type="reset" id="reset" tabindex="6" value="<?php esc_attr_e( '重写' ); ?>" />
			<?php comment_id_fields(); ?>
		</div>

这个代码加了用户登录验证,如果是已登录就不用再输入验证码的,方便吧!看本地测试效果图:
comments-diy

5 Responses Comment (5) Trackback (0)
  1. 莆田网 :

    站长怎么没用呢,这个留言不用验证码? :?:

    1. SingleX Post author :

      @莆田网 : 没时间呀,这几天天天考试忙的,在本地环境已经测试过了的。开始我也想验证码,不过貌似比较麻烦,算术验证比较简单嘎。

  2. skylong :

    恰恰相反,我是能用插件就用插件 :shock:

发表评论