WordPress 使用 Cloudflare Turnstile 教程:纯代码无感验证

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/