关于博客配置ReCaptcha时遇到的问题
首先第一个问题便是中国大陆无法访问ReCaptcha服务,于是无法使用ReCaptcha验证码。
虽然在用户层面可以解决这个问题(见GOOGLE 人机验证(RECAPTCHA)解决方案(可解决 CSP 问题)),但毕竟十分的麻烦,于是为国内用户服务的网站使用ReCaptcha时最好使用recaptcha的镜像recaptcha.net。
在使用WordPress插件时,手动编辑插件页面,将代码中的所有https://www.google.com/recaptcha/
更换成https://www.recaptcha.net/recaptcha/
即可。
更新:我使用的Advanced noCaptcha & invisible Captcha在6.1.3版本终于支持直接选择recaptcha.net域名了。
第二个问题:我使用的Advanced noCaptcha & invisible Captcha插件在评论区会显示错误,验证框会和“提交”按钮重叠。
验证码插件代码中有一行是:
if ( ! is_user_logged_in() ) {add_action( 'comment_form_after_fields', array( $this, 'form_field' ), 99 );}
也就是说,如果用户未登录,就在comment_form_after_fields
处添加form_field
(验证码框)。
不同的add_action
参数使得验证码位置不同。
① comment_form_before_fields
② comment_form_after_fields
③ comment_form
上面三个action可以在wp-includes/comment-template.php
中找到,代码结构如下:
do_action( 'comment_form_before_fields');
<评论者信息框>
do_action( 'comment_form_after_fields');
<提交按钮>
do_action( 'comment_form', $post_id );
于是,改变action参数即可使验证码正确显示。
注意:以上两处修改代码会在插件/主题更新时被覆盖,需要手动备份,更新后再次修改。
顺便,这个插件更新7.0版本之后不少功能收费了,放两个备份在这:
说实话,如果用 recaptcha.net 国内镜像的话,reCaptcha 在国内还是比较好用的
而且 reCaptcha 还是免费的,技术上比极验要好不少
就是注册使用的时候要亲自爬墙