Cloudflare Turnstile 是一款无需验证码点击、无需收集用户隐私的智能人机验证方案。通过在 WordPress 中集成 Turnstile,可以有效防止垃圾评论、暴力登录和恶意注册,同时提升用户体验并符合隐私合规要求。
今天就分享两种方法
第一种
纯代码实现
// Add CF Turnstile JavaScript on login page
function wpp_login_script() {
wp_register_script('login-turnstile', 'https://challenges.cloudflare.com/turnstile/v0/api.js', false, NULL);
wp_enqueue_script('login-turnstile');
}
add_action('login_enqueue_scripts', 'wpp_login_script');
// Add CF Turnstile on login page
function add_turnstile_on_login_page() {
echo '<div class="cf-turnstile" data-sitekey="your-site-key"></div>';
}
add_action('login_form','add_turnstile_on_login_page');
// Validating CF Turnstile on login page
function turnstile_login_check($user, $password) {
$postdata =$_POST['cf-turnstile-response'];
//add secret key
$secret = 'your-secret-key';
$headers = array(
'body' => [
'secret' => $secret,
'response' => $postdata
]
);
$verify = wp_remote_post('https://challenges.cloudflare.com/turnstile/v0/siteverify', $headers);
$verify = wp_remote_retrieve_body($verify);
$response = json_decode($verify);
if($response->success) {
$results['success'] = $response->success;
} else {
$results['success'] = false;
}
if(empty($postdata)){
wp_die(__("<b>ERROR: </b><b>Please click the challenge checkbox.</b><p><a href='javascript:history.back()'>« Back</a></p>"));
} elseif(!$results['success']){
wp_die(__("<b>Sorry, spam detected!</b>"));
} else {
return $user;
}
}
add_action('wp_authenticate_user', 'turnstile_login_check', 10, 2);
把代码的 ID 与 key 替换成你自己的放到主题
functions.php添加代码更新主题失效
your-site-key
your-secret-key
别忘记添加你的的域名cloudflare

第二种
使用插件:Simple CAPTCHA Alternative with Cloudflare Turnstile
配置非常简单就不演示了
如果你不小心删掉了 cloudflare Turnstile 小组件或者更新了密钥
只需进入你的wordpress安装目录修改你的插件名:
simple-cloudflare-turnstile
这样WordPress检测不到插件就不会启用
登陆成功后就可以改回来修改 ID 与 KEY
/wp-content/plugins/simple-cloudflare-turnstile
主题代码也是一样的
主题安装位置为进入主题functions.php删掉代码或者更改 ID 与 KEY 即可
/wp-content/themes/