| 开发者 |
kitgenix
carlbensy16 |
|---|---|
| 更新时间 | 2026年10月30日 18:44 |
| 捐献地址: | 去捐款 |
| PHP版本: | 8.2 及以上 |
| WordPress版本: | 7.4 |
| 版权: | 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.
Challenge performance reporting on the Log tab shows how quickly Cloudflare answers server-side verifications (average, 95th-percentile range, slow responses and slowest response) and which forms are seeing more unsuccessful checks than in the previous period, with daily charts, per-form trends, top Cloudflare error codes and a CSV export for the last 7, 14 or 30 days. It keeps only daily counts, response times and error codes per integration – never tokens, IP addresses or submitted form data – and deletes anything older than 60 days automatically.
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, Elementor Atomic 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. Enable Pay for Order Form under Integrations → WooCommerce. It is independent of the checkout toggles, so you can protect order-payment links (for example the "Customer payment page" link or failed-payment retries) with or without protecting the normal checkout. The token is verified before WooCommerce passes the payment to the gateway.
Yes. The Challenge performance section on the Log tab reports Cloudflare Siteverify response times and per-form unsuccessful-check trends for the last 7, 14 or 30 days. Only aggregate numbers and Cloudflare error codes are stored; no submitted personal data is kept.
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. Because User-Agent strings can be spoofed, the User-Agent whitelist only applies to page views (for example uptime monitors and crawlers) and never exempts a form submission from verification.
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.
e-form element in Elementor Pro 4.x), alongside the existing Elementor Pro Forms integration. The widget is added before the form's submit button, a submission without a solved challenge is blocked before it is sent, and every submission is verified server-side before Elementor stores uploads or runs any after-submit actions (email, webhook, collect submissions). The existing Elementor toggle and its Auto-inject/Shortcode-only, theme, size and language settings apply to both form types.//wp-login.php, /./wp-login.php or /wp%2Dlogin.php) without the Turnstile fields could skip verification, because the check compared the raw request URL against the login URL. Login protection is now decided by the script WordPress actually runs, so every route to wp-login.php is covered, including when a login-URL renaming plugin is used.X-Forwarded-For (for example a load balancer, nginx or Varnish). The client IP was taken from the left-most public address in X-Forwarded-For, which the visitor controls, so sending X-Forwarded-For: <whitelisted IP> could skip Turnstile verification. The header is now read right to left, skipping your trusted proxies, and the first address the trusted proxy actually saw is used. If that address is not a valid public IP, the proxy's own address is used instead.init, so on a site running more than one Kitgenix plugin, every plugin after the first to load triggered an "Icon collection is already registered" notice. It is now only registered if not already present.Requires PHP: 8.2). The activation check now also blocks activation on PHP versions below 8.2.cart_checkout_blocks), so WooCommerce no longer lists the plugin as possibly incompatible in the Checkout block editor.$escape argument is now passed explicitly in the admin CSV exports, preventing "the $escape parameter must be provided" deprecation notices on PHP 8.4 and later. The CSV format is unchanged.action and hostname fields Cloudflare's siteverify response echoes back, guarding against a token solved on one form being replayed against a different one. Ships in log-only mode this release – mismatches are logged, not blocked, pending full enforcement in a later release.xmlrpc.php endpoint.days request parameters to use absint() instead of a raw integer cast.DOCUMENTATION.md to remove the Plugin Score integration, describe the new login and User-Agent whitelist behaviour, and document WooCommerce Pay for Order protection and challenge performance reporting..pot template also picks up the Easy Digital Downloads block strings added in 2.1.4, which were missing from the previous template..pot translation template for 2.2.0.CHANGELOG.md.CHANGELOG.md file.