Turnstile 是 Cloudflare 的智能 CAPTCHA 替代方案。Contact Form 7 提供与 Turnstile 的集成模块,可有效保护您的联系表单免受垃圾邮件机器人的攻击。与Google reCAPTCHA不同,Turnstile 是免费提供的。除非您有理由使用 reCAPTCHA,否则我们建议您使用 Turnstile。

Cloudflare获取站点密钥和密钥
您需要从 Cloudflare获取站点密钥和密钥。如果您还没有 Cloudflare 帐户,请先创建一个。为您的网站创建一个小部件或选择一个现有的小部件,然后复制站点密钥和密钥以供日后使用。您可以忽略客户端和服务器端的集成代码,就像 Contact Form 7 一样。
在开始之前,您必须具备:
- Cloudflare 帐户
- 要保护的网站或 Web 应用程序
- HTML 和您首选的服务器端语言的基础知识
每个小部件都有自己独特的站点密钥和密钥对,以及配置选项。
成分 | 描述 |
---|---|
站点密钥 | 用于调用您网站上的 Turnstile 小部件的公钥。 |
密钥 | 用于服务器端令牌验证的私钥。 |
配置 | 模式、主机名、外观设置和其他选项。 |
之后,转到您的 WordPress 网站仪表板。转到“联系人”>“集成”,然后在“Turnstile”部分中选择“设置集成”。在那里粘贴站点密钥和密钥。

就这样。现在,您的所有联系表单都会自动包含 Turnstile 小部件,并受到保护,免受机器人攻击。
Turnstile 被设计为一项独立服务。您可以在任何网站上使用 Turnstile,无论该网站是否通过 Cloudflare 网络代理。这允许跨多云环境、本地基础设施或使用其他 CDN 的站点灵活部署。客户端小部件和服务器端验证步骤完全独立。
渲染控制小部件
Turnstile 小部件默认位于表单顶部。如需移动它,请在表单模板[turnstile]
中插入form-tag 。
此外,您还可以在[turnstile]
表单标签中指定以下选项:
action
— 指定data-action
属性值。appearance
— 指定data-appearance
属性值。language
— 指定data-language
属性值。size
— 指定data-size
属性值。tabindex
— 指定data-tabindex
属性值。theme
— 指定data-theme
属性值。
例子:[turnstile size:compact language:en]

JavaScript 渲染参数 | 数据属性 | 描述 |
---|---|---|
sitekey | data-sitekey | 每个小部件都有一个站点密钥。此站点密钥与相应的小部件配置相关联,并在小部件创建时创建。 |
action | data-action | 一个客户值,可用于在分析中区分同一站点密钥下的小部件,并在验证后返回。该值*多只能包含 32 个字母数字字符(包括_ 和- )。 |
cData | data-cdata | 客户有效负载,可用于在质询签发过程中将客户数据附加到质询中,并在验证后返回。它*多只能包含 255 个字母数字字符(包括_ 和- )。 |
callback | data-callback | 质询成功后调用的 JavaScript 回调。回调会传递一个可验证的令牌。 |
error-callback | data-error-callback | 发生错误(例如网络错误或验证失败)时调用的 JavaScript 回调。请参阅客户端错误。 |
execution | data-execution | 执行控制何时获取控件的令牌,可以是 on render (默认)或 on 。有关更多信息,execute 请参阅执行模式。 |
expired-callback | data-expired-callback | 当令牌过期时调用 JavaScript 回调并且不会重置小部件。 |
before-interactive-callback | data-before-interactive-callback | 在挑战进入交互模式之前调用的 JavaScript 回调。 |
after-interactive-callback | data-after-interactive-callback | 当挑战离开交互模式时调用 JavaScript 回调。 |
unsupported-callback | data-unsupported-callback | 当 Turnstile 不支持给定的客户端/浏览器时调用 JavaScript 回调。 |
theme | data-theme | 微件主题。可采用以下值:light 、dark 、auto 。默认值为 auto ,以尊重访客偏好。您可以通过相应地设置主题来强制将其设置为亮色或暗色。 |
language | data-language | 显示的语言必须是:(auto 默认)使用访客选择的语言,或 ISO 639-1 双字母语言代码(例如en ),或语言和国家/地区代码(例如)。有关更多信息,en-US 请参阅支持语言列表。 |
tabindex | data-tabindex | Turnstile 的 iframe 的 tabindex,用于辅助功能。默认值为0 。 |
timeout-callback | data-timeout-callback | 当挑战呈现交互式挑战但未在规定时间内解决时,会调用 JavaScript 回调。回调会重置小部件,以允许访客再次解决挑战。 |
response-field | data-response-field | 控制是否创建带有响应令牌的输入元素的布尔值,默认为true 。 |
response-field-name | data-response-field-name | 输入元素的名称,默认为cf-turnstile-response 。 |
size | data-size | 小部件大小。可以采用以下值:normal 、flexible 、compact 。 |
retry | data-retry | 控制小部件在获取令牌失败时是否自动重试。默认值为auto ,表示将自动重试。您可以将其设置为 ,never 以禁用失败时的重试。 |
retry-interval | data-retry-interval | 当retry 设置为时auto ,retry-interval 控制重试间隔时间(以毫秒为单位)。值必须是小于 的正整数900000 ,默认为8000 。 |
refresh-expired | data-refresh-expired | 令牌过期时自动刷新。可以采用auto 、manual 或never ,默认为auto 。 |
refresh-timeout | data-refresh-timeout | 控制小部件在输入交互式挑战并观察到超时后是否自动刷新。可以采取auto (遇到交互式超时时自动刷新)、manual (提示访客手动刷新)或never (显示超时)三种方式,默认为auto 。仅适用于托管模式的小部件。 |
appearance | data-appearance | 外观控制小部件何时可见。它可以是always (默认)、execute 或。有关更多信息,interaction-only 请参阅外观模式。 |
feedback-enabled | data-feedback-enabled | 允许 Cloudflare 在小部件发生故障时收集访客反馈。可以是true (默认)或false 。 |