首先第一个问题便是中国大陆无法访问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版本之后不少功能收费了,放两个备份在这:

1 对 “关于博客配置ReCaptcha时遇到的问题”的想法;

  1. 说实话,如果用 recaptcha.net 国内镜像的话,reCaptcha 在国内还是比较好用的
    而且 reCaptcha 还是免费的,技术上比极验要好不少
    就是注册使用的时候要亲自爬墙

发表回复

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