为wordpress文章评论添加算术验证码

从网上搜到http://www.yuju.org/379.html使用的方法,
但也许是我用的workpress版本不同,没有找到相关的代码,于是参考了作者文章的基础了,研究了下,最终这样实现。

修改wordpress根目录下的 wp-comments-post.php

修改源代码其实没那么难,只是任何源代码的修改都记得先备份一个就是了。

网站根目录下的 wp-comments-post.php,查找:

if ( ” == $comment_content )
在此代码的上面增加:

 

//my code

if ( !$user->ID ) {

$aaa = trim($_POST[aaa]);

$bbb = trim($_POST[bbb]);

$subab = trim($_POST[subab]);

if((($aaa+$bbb)!=$subab)|| empty($subab)){

wp_die( __(‘错误提示:请正确输入的两数字相加的结果。’) );

}

}

//my code

 

然后修改wp-includes文件夹下的的文件comment-template.php
找到function comment_form( $args = array(), $post_id = null ) 方法

查找相关代码,我修改后如下

$req = get_option( 'require_name_email' );
$aria_req = ( $req ? " aria-required='true'" : '' );
$html5 = 'html5' === $args['format'];
$aaa=rand(0,5);
$bbb=rand(3,9);
$fields = array(
'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
'<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
'<input id="email" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
// 'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label> ' .
// '<input id="url" name="url" ' . ( $html5 ? 'type="url"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
'check' => '<p><label>*验证码: </label> <span> (为了证明你是人类,请输入两数相加的结果)</span> <br> <input type="text" name="subab" id="subab" size="2" tabindex="5" style="width: 150px;display:inline-block;" /> <label> = '.$aaa.' + '.$bbb.'</label>
<input name="aaa" value="'.$aaa. '" type="hidden" />

<input name="bbb" value="'.$bbb.'" type="hidden" /></p>
',
);

 

 

效果如风潇潇的评论验证码效果

发表评论