| 开发者 |
kitgenix
carlbensy16 |
|---|---|
| 更新时间 | 2026年9月3日 04:29 |
| 捐献地址: | 去捐款 |
| PHP版本: | 8.1 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv3 or later |
| 版权网址: | 版权信息 |
wp_login_form().[kitgenix_turnstile]
The shortcode is useful when the site owner needs to render the widget in a supported custom workflow. Rendering a widget alone does not automatically secure arbitrary custom PHP processing; custom form handlers must still validate the submitted token server-side.
Diagnostics, Metrics and Site Health
The plugin includes diagnostics for configuration and verification health, local counters for passed/failed checks, latency information, recent verification events and integration-level metrics. Site Health integration can surface configuration or connectivity issues to administrators.
Developer Mode adds additional troubleshooting detail without changing the fundamental requirement that live submissions be verified correctly when protection is active.
Settings Portability
Settings can be exported and imported for controlled migration between WordPress installations. The transfer system is designed for plugin configuration rather than for exporting visitor submissions or unrelated site data.
Performance and Script Loading
The public Cloudflare Turnstile script is loaded only for pages/contexts where the plugin determines that a Turnstile widget may be needed. The loader includes duplicate-script detection so multiple integrations do not intentionally enqueue several copies of the same Turnstile API script.
Public assets are kept separate from the admin interface, and admin-only diagnostics/settings code does not need to run as part of every anonymous form request.
Privacy and Data Flow
Turnstile is an external service provided by Cloudflare, so challenge rendering and server-side verification necessarily communicate with Cloudflare. The plugin itself stores configuration and limited diagnostic/aggregate verification data locally. It does not require a Kitgenix account and does not send form contents to Kitgenix for verification.
The exact Cloudflare data flow, WordPress.org Hub request and Google Fonts admin request are documented in the External Services section below.
Common Uses
Cloudflare Turnstile is a CAPTCHA alternative that runs a challenge in the visitor's browser and produces a token. The token must then be validated server-side before the protected action is accepted.
No. Turnstile can be used on a WordPress site even when the site's traffic is not proxied through Cloudflare.
Yes. You need a Cloudflare account and a Turnstile Site Key / Secret Key pair.
Yes. Supported integrations validate the token with Cloudflare's Siteverify endpoint before accepting the protected submission, unless Developer Mode or the relevant per-integration Test Mode is intentionally configured to warn rather than block.
Native WordPress login, registration, lost/reset password and comment forms are supported. The plugin also supports WooCommerce, Easy Digital Downloads, Elementor Pro Forms, Contact Form 7, WPForms, Fluent Forms, Formidable Forms, Forminator, Gravity Forms, JetFormBuilder, Jetpack Forms, Kadence Forms, Ninja Forms and several membership/community plugins.
Yes. The plugin can render Turnstile in block-based checkout and validates the token server-side during the WooCommerce Store API checkout request.
Yes. The plugin declares HPOS compatibility and uses WooCommerce order CRUD methods for its Checkout Blocks verification metadata.
Yes. Automatic placement is available for supported integrations, and many integrations include a shortcode-only placement option. The [kitgenix_turnstile] shortcode can also render a widget manually.
The shortcode can render the widget, but an unsupported custom form still needs a server-side validation integration. Rendering a widget alone is not sufficient security.
Yes. Global theme, size and language settings can be overridden per integration.
Developer Mode is warn-only. Failed verification is recorded but does not block the submission. Individual integrations can also be placed in Test Mode without putting the entire site into warn-only mode.
Replay protection helps reject a Turnstile token that has already been accepted or processed. This reduces the usefulness of captured or repeatedly submitted tokens.
Yes. The optional honeypot can reject simple automated submissions before Cloudflare Siteverify is contacted.
The plugin can whitelist logged-in users, configured IP addresses/ranges and User-Agent strings. Whitelisted visitors do not need to complete Turnstile, and the frontend Turnstile script is skipped for them.
Yes. Proxy-aware IP detection is included. For security, forwarded headers are trusted only when proxy trust is enabled and the connecting proxy matches your configured trusted proxy list.
Developers can return false from the kitgenix_turnstile_send_remoteip filter. See the External Services section for the default data flow.
Yes. The plugin supports the KITGENIX_CAPTCHA_FOR_CLOUDFLARE_TURNSTILE_SITE_KEY and KITGENIX_CAPTCHA_FOR_CLOUDFLARE_TURNSTILE_SECRET_KEY constants and matching environment variables.
Yes. Export settings to JSON and import them using Replace or Merge mode. Credentials are excluded by default unless you explicitly include them.
Check that the Site Key exists, the integration and relevant form toggle are enabled, the visitor is not whitelisted, and another plugin or optimisation rule is not blocking https://challenges.cloudflare.com. Also check the plugin's duplicate-loader warning and Site Health test.
Turnstile tokens are short-lived and single-use. Cached forms, back-button resubmissions, double-clicks, delayed JavaScript or submitting after a token has expired can all require a fresh Turnstile challenge.
turnstile.remove() before clearing and re-rendering any widget container, across every integration (WooCommerce, Elementor, Gravity Forms, Formidable Forms, Forminator, Jetpack Forms, Fluent Forms, Kadence Forms). Previously the container was cleared directly without unregistering the widget first, which could leave a stale widget reference behind and produce "Cannot find Widget" warnings after repeated re-renders.api.js script URL. Turnstile's own script logged this as an unrecognised parameter; the URL now matches what Cloudflare's CDN expects.siteverify endpoint.siteverify round-trip latency so slow successful responses can be distinguished from failures and timeouts.kitgenix/mark for discovery through wp_get_icon() and the icons REST endpoint.wp-login.php lost-password flow.bbp_new_forum_pre_insert.Script_Handler::get_allowed_languages() so global and per-integration language settings cannot drift apart.wpcf7_validate validation filter is always registered. Previously shortcode-only placement could render the widget while allowing submissions to bypass validation completely.$_SERVER['REQUEST_METHOD'] as a security boundary.edd_process_login_form hook with WordPress's real authenticate filter, scoped to EDD login submissions through EDD's own nonce field.fluentform_submit_validation hook with Fluent Forms' actual fluentform/validation_errors validation filter.kadence_blocks_advanced_form_submission_reject, replacing dead hooks and an invalid class check that meant validation previously never ran.Turnstile_Validator::validate_token() now respects site-wide Developer Mode and per-integration Test Mode consistently with is_valid_submission().CF-Connecting-IP, True-Client-IP, X-Forwarded-For, and X-Real-IP are only trusted when REMOTE_ADDR matches an administrator-configured trusted proxy address or CIDR.api.js continues to load once and only when a widget will actually render for the current visitor.custom_order_tables) compatibility.WC_Order CRUD API through update_meta_data() and save() rather than direct database access.Turnstile_Validator::get_all_integration_keys() as the canonical list of integrations eligible for Test Mode and per-integration settings, sourced consistently with get_integration_label().kitgenix_turnstile_skip_wp_login_validation filter under Developers → Filters.