外掛說明
輕鬆將 Cloudflare Turnstile 人機驗證功能加入 WordPress 功能表單中,並保護他們不受垃圾訊息侵擾。
這是方便使用、具備隱私保護且完全免費的 reCAPTCHA 替代解決方案。
支援的功能表單
網站管理員目前可以在下列功能表單中啟用 Cloudflare Turnstile 人機驗證功能:
WordPress
- 登入表單
- 註冊表單
- 重設密碼表單
- 留言表單
WooCommerce
- 結帳頁面
- 前往付款
- 帳號詳細資料表單
- 登入表單
- 註冊表單
- 重設密碼表單
聯絡表單外掛
- WPForms
- Fluent Forms
- Contact Form 7
- Gravity Forms
- Formidable Forms
- Forminator Forms
- Jetpack 表單
- Kadence 聯絡表單
- SureForms
其他整合項目
- Elementor Pro 聯絡表單
- Easy Digital Downloads 功能表單
- Paid Memberships Pro 功能表單
- Mailchimp for WordPress 聯絡表單
- MailPoet 聯絡表單
- BuddyPress 註冊表單
- bbPress 建立主題及回覆表單
- MemberPress 功能表單
- Ultimate Member 功能表單
- WP-Members 功能表單
- WP User Frontend 功能表單
- WP User Manager 功能表單
- wpDiscuz 留言表單
- CheckoutWC 及 Flux Checkout
- Sunshine Photo Cart
這個外掛也與 WordPress 多站網路及大多數的兩步驟驗證外掛相容。
其他功能
這個外掛包含其他多項功能及選項:
- 外觀樣式:可選取 Turnstile 的預設外觀樣式。
- 服務徽章語言:可選取 Turnstile 的預設服務徽章語言。
- 顯示模式:選取 Turnstile 是要永遠顯示或僅在需要互動時才顯示。
- 停用 [提交] 按鈕:完成 Turnstile 人機驗證前一律停用 [提交] 按鈕。
- 自訂錯誤訊息:為失敗的提交設定專屬自訂錯誤訊息。
- 允許清單:為已登入或特定 IP 位址 (不支援萬用字元) 的使用者停用 Turnstile 人機驗證。
- 資源提示 (預先連線):具備啟用資源提示預先連線以提升效能的選項。
- 失效保障模式:具備啟用失效保障模式的選項。當 Cloudflare 服務停擺時,這個模式仍能放行表單傳送,或將 reCAPTCHA 作為後援驗證方式。
- 偵錯記錄:啟用能協助表單傳送事件移難排除的 Turnstile 偵錯記錄。
快速入門
以下是快速簡易的 Cloudflare Turnstile 入門指南。
- 只要在 Cloudflare 帳號中產生 [網站金鑰] 及 [秘密金鑰],並在外掛設定頁的對應欄位中輸入並儲存。
- 選取要加入 Cloudflare Turnstile 人機驗證功能的功能表單,並點擊 [儲存]。
- 請點擊 [測試 API 回應] 按鈕,確認 Turnstile API 正確執行。
- 全新的 Cloudflare Turnstile 驗證便會顯示在要使用人機驗證的功能表單,保護這些功能表單免遭濫用。
如需更詳盡的說明,請參閱外掛設定指南。
什麼是 Cloudflare Turnstile?
Cloudflare Turnstile 為網站訪客提供無障礙、不需驗證碼的網站體驗。
Turnstile 是一款可以在沒有個人資料隱私問題或其他人機驗證所造成的糟糕使用者體驗的狀況下,防止網站遭到濫用、協助確認網站訪客為真人的反垃圾訊息篩選程式。
進一步了解:https://www.cloudflare.com/zh-tw/products/turnstile/
這個外掛是否免費提供使用?
是,這個外掛完全免費使用,也沒有推出付費版本,更沒有進行其他資料追蹤。
Cloudflare Turnstile 同樣是完全免費的服務。
外掛本地化
這個外掛目前有 14 個本地化版本,感謝全體本地化貢獻者。如果你想要協助這個外掛本地化為你的母語版本,請點擊這個連結。
其他資訊
- 如需協助及提供功能建議,請提出需求
- 在 Twitter 上跟隨開發者 @ElliotSowersby
- 在 GitHub 上查看相關資訊
支持外掛開發工作
如果想要支持這個外掛的持續開發及提供技術支援,可以直接贊助這個外掛。
商標通知
Cloudflare、Cloudflare 標誌及 Cloudflare Workers 均是 Cloudflare 公司在美國及其他司法管轄地區的商標/註冊商標。
這個外掛與 Cloudflare 公司無任何隸屬關係,亦未獲其認可或贊助。
螢幕擷圖



![在 WooCommerce [我的帳號] 頁面中的人機驗證功能](https://ps.w.org/simple-cloudflare-turnstile/assets/screenshot-4.png?rev=2799405)



安裝方式
- 將外掛安裝套件 ZIP 壓縮檔解壓縮所得的
simple-cloudflare-turnstile資料夾上傳至網站的/wp-content/plugins/目錄中。 - 在 WordPress 管理後台的 [外掛] 選單中啟用外掛。
- 在 WordPress 管理後台中,前往 [設定][Cloudflare Turnstile] 設定外掛以符合需求。
- 請在 Clourflare 帳號中產生 [網站金鑰] 及 [秘密金鑰],並在外掛設定頁中輸入。
- 選取要啟用 Cloudflare Turnstile 人機驗證功能的功能表單,然後點擊 [儲存設定]。
- 最後還需要對小工具進行快速測試。請點擊 [測試 API 回應] 按鈕,確認 API 正確執行。
- 全新的 Cloudflare Turnstile 驗證便會顯示在要使用人機驗證的功能表單,保護這些功能表單免遭濫用。
如需更詳盡的說明,請參閱外掛設定指南。
常見問題集
-
這個掛是否有設定指南?
-
有。使用者可以查看這份外掛設定指南。
-
這個外掛是否會持續新增更多整合功能?
-
外掛每次更新都會新增更多整合功能,如果有任何功能建議,歡迎提交相關需求。
-
需要協助時如何取得技術支援?
-
Please bare in mind, the Simple CAPTCHA with Cloudflare Turnstile plugin is 100% free, developed as a way to give back to the WordPress community.
使用者可以在 WordPress.org 技術支援論壇發佈技術支援需求,並獲得來自社群的協助,外掛開發團隊也會持續關注,並在允許的狀況下提供技術支援及回覆,但是我們並不保證會回覆每個技術支援需求。
請點擊這裡以建立技術支援需求。
技術支援論壇是唯一一個完全免費提交技術支援需求並獲得這個外掛的開發者及 WordPress 社群的技術支援的地方。
-
這個外掛是否可以免費使用?
-
是,這個外掛完全免費使用,也沒有推出付費版本,更沒有進行其他資料追蹤。
Cloudflare Turnstile 同樣是完全免費的服務。
-
這個外掛是否更適合資料隱私權及 GDPR?
-
Cloudflare 公開宣示他們「絕不會為廣告再行銷收集資料」,且 Turnstile 「絕對不會尋找 Cookie (例如登入 Cookie) 或使用 Cookie 以收集或儲存任何類型的資訊」。
請查看這篇官方文章,文章內容詳盡說明了 Turnstile 如何以更少的資料收集,提供更多的隱私權及相同的安全性。
-
主控台中的 401 錯誤是否會是個問題?
-
使用者可以忽略這項錯誤。
會產生這個錯誤,是因為它要求私密存取權杖 (Private Access Token,PAT) 開啟外部連結,但使用者所使用的裝置或瀏覽器並不支援。
點擊這裡以進一步了解相關資訊。
-
Turnstile 在瀏覽器主控台中的錯誤代碼
-
如需進一步了解在瀏覽器主控台中顯示的錯誤代碼,請參考 Cloudflare 的線上說明。
-
沒有顯示 Turnstile 人機驗證,該如何處理?
-
首先,請確認已正確完成設定指南中的說明項目,並已完成外掛設定頁面中的 API 回應測試。
如果持續遇到問題,請在 WordPress.org 技術支援論壇發佈技術支援需求。
-
如何回報安全性程式碼錯誤?
-
使用者可以透過 Patchstack 漏洞揭露計畫回報安全性程式碼錯誤,Patchstack 團隊會協助驗證、分類及處理任何安全性漏洞。回報安全性漏洞
使用者評論
參與者及開發者
變更記錄
Version 1.44.0 – 29th September 2026
- New: Added support for FluentAuth 3.0’s two-factor authentication, including passkeys and authenticator apps. The second step of the login previously failed with “There has an error when log you in” when Turnstile was enabled on the WordPress login form.
- Tweak: Improved compatibility with “Delay JavaScript” in performance plugins such as LiteSpeed Cache and Perfmatters, which could stop the Turnstile widget from displaying on the WooCommerce block checkout, and could stop the Turnstile widget from displaying on Elementor forms and popups or from resetting after a failed submission.
- Tweak: Improved support for stores with a classic (shortcode) checkout page while the main checkout page uses the Checkout block, where the Turnstile widget could fail to display.
- Tweak: Payment methods set to skip Turnstile are now also skipped on the WooCommerce “Pay for order” page, as on the checkout.
- Tweak: A Turnstile token used on the WooCommerce block checkout can no longer be re-used in another session while that order is still being processed.
- Tweak: The Turnstile widget is now displayed on every copy of a form that appears more than once on the same page, not just the first.
- Tweak: Improved compatibility with LiteSpeed Cache ESI, so the Turnstile widget is displayed on the comment form for logged-in users and returning commenters.
- Tweak: Improved compatibility with Easy Digital Downloads Pro, whose settings could previously not be enabled.
- Tweak: Improved compatibility with Elementor forms added using a template (such as with the template shortcode, the Template widget or a Theme Builder template) when the Elementor “Autodetect pages with forms” option is selected, as Turnstile was not loaded on the page.
- Tweak: Tightened the FluentAuth integration, so its two-factor compatibility for FluentAuth 2.x can no longer be used to skip the Turnstile check on other login forms, such as the WooCommerce login form.
- Tweak: The “Analytics” tab now shows which form a failed submission came from, where most failed submissions were previously listed as “Unknown form”. Elementor forms are now also listed by name, and Kadence forms are grouped into one entry instead of a new entry for every submission.
- Tweak: The “Turnstile Debug Log” now shows which form each entry came from.
- Fix: Fixed an issue where Android users could not type in the WooCommerce login, register or checkout forms on Divi sites, as the keyboard closed and the Turnstile widget disappeared when a field was tapped.
- Fix: Fixed an issue where WooCommerce block checkout orders could be rejected with a Turnstile error after a failed attempt, such as when paying with PayPal.
- Fix: Fixed an issue where WooCommerce block checkout orders were rejected with a Turnstile error for whitelisted visitors, and while the failsafe was active during a Cloudflare outage (including after completing the reCAPTCHA failsafe).
- Fix: Fixed an issue where logged-in customers could not pay for an order on the WooCommerce “Pay for order” page when “Guest only” was enabled.
Version 1.43.2 – 17th September 2026
- Fix: Fixed an issue where the Turnstile widget could be missing from the WooCommerce checkout with certain themes or custom checkouts.
Version 1.43.1 – 11th September 2026
- Fix: Fixed an issue where the “Before Payment”, “After Payment” and “Before Pay Button” widget positions could place the Turnstile widget outside the WooCommerce block checkout, away from the form, on a checkout page whose saved content is missing the payment or place order blocks.
- Fix: Fixed an issue where the Turnstile widget was added twice to a form inside an Elementor popup, which could leave the form unable to be submitted. Elementor rebuilds a popup from a copy of its markup each time it opens, so the widget is now added when the popup opens rather than before it.
Version 1.43.0 – 9th September 2026
- New: Added support for Elementor’s new Atomic forms, using the same “Enable Elementor Forms” setting as classic Elementor Pro forms.
- New: Added support for Wordfence 9.0.0’s Login Security passkeys, which were rejected with a missing challenge error when the WordPress login check was enabled.
- Tweak: Added the cfturnstile_is_partial_checkout_render filter, so other page builders can flag any extra renders of the checkout template.
- Fix: Fixed an issue where WooCommerce orders on the Divi Builder’s Checkout, or paid with a card gateway such as Stripe or WooPayments could be rejected with a Turnstile error.
- Fix: Fixed a WooCommerce checkout token remaining usable for up to two minutes when the request that used it ended unexpectedly, such as after a fatal error.
Version 1.42.3 – 7th September 2026
- Fix: Fixed the Turnstile widget not being reset after a failed submission on forms that submit without a page reload, such as AJAX login forms and single page (SPA) themes.
- Fix: Fixed the Turnstile widget not appearing on the WooCommerce checkout when the section chosen in the “Widget Position” setting was not part of the checkout. It now falls back to a position above the “Place Order” button.
- Fix: Fixed the “After Payment” widget position removing the entire payment section, including the payment methods, from the WooCommerce block checkout.
- Fix: Fixed the Turnstile widget not appearing on the WooCommerce app authorization screen (/wc-auth/). You are now sent to the WordPress login form to complete the challenge, then returned to the authorization screen.
- Fix: Fixed the “cloudflare turnstile” button in the Contact Form 7 form editor inserting nothing when clicked.
- Fix: Fixed the Turnstile error message not being shown on the Gravity Forms User Registration login form ([gravityform action=”login”]).
- Security: Fixed vulnerabilities where the Turnstile check on the WooCommerce checkout and lost password form, and WordPress login and lost password forms could be potentially be bypassed.
- Security: Fixed a vulnerability in the Contact Form 7 integration, where an unauthenticated visitor could run any shortcode registered on the site by submitting it as a field value. Reported by Jakub Herman via WPScan.
- Security: Fixed a vulnerability where the Turnstile check on Gravity Forms could be bypassed by adding a page number to the request. The check is now only skipped on forms that really do have more than one page.
- Tweak: The Turnstile form-tag for Contact Form 7 is now [cf7_simple_turnstile]. Your existing [cf7-simple-turnstile] tags keep working and do not need to be changed.
Version 1.42.1 – 27th July 2026
- Fix: Fixed an issue where the submit button could stay disabled after the Turnstile challenge was completed, when the “Disable Submit Button” option is enabled. On the login form this could lock you out of your site.
- Fix: Fixed the submit button staying disabled after the widget was re-rendered, such as after an AJAX comment or on the Blocksy account modal.
- Fix: Fixed the submit button staying disabled on Jetpack forms when the “Disable Submit Button” option is enabled.
- Fix: Fixed WooCommerce checkout failing with a “please verify that you are human” error when using the GlobalPayments GPAPI gateway with 3D Secure enabled.
- Fix: Fixed the Turnstile API script loading render-blocking, even with the “Defer Scripts” option enabled.
- Tweak: Changing the API keys programmatically, such as with WP-CLI or a provisioning script, no longer switches Turnstile off on every form until the manual test is run.
- Tweak: Tightened the Forminator integration further, so a solved Turnstile challenge can no longer be re-used for up to 30 seconds.
Version 1.42.0 – 26th July 2026
- New: Added support for CIDR ranges (IPv4 and IPv6) in the IP whitelist, e.g. 203.0.113.0/24 or 2001:db8::/32, so visitors can be whitelisted by subnet.
- Fix: Fixed IP whitelist matching for IPv6 addresses written in a different format, and for IPv4-mapped IPv6 addresses such as ::ffff:203.0.113.5. A /0 range is now ignored.
- Fix: Fixed an issue since 1.41 where the login widget could be reset while a two-factor prompt was open (e.g. Wordfence 2FA), causing the login to fail.
- Fix: Turnstile now always loads in explicit render mode, fixing the widget not appearing on slow connections, with a “delay JavaScript” optimization, or in AJAX-loaded forms such as comment forms and popups.
- Fix: Fixed several WooCommerce issues, including the checkout script erroring when a “delay JavaScript” optimization runs it before jQuery, widgets not rendering on the block checkout, and the “Click here to login” toggle.
- Fix: Fixed the Turnstile widget not appearing in the Blocksy theme’s header account modal, and the integration now also loads when a Blocksy child theme is active.
- Fix: Fixed a conflict with FluentAuth’s email two-factor and magic login, where the second step could fail with a Turnstile error.
- Fix: Fixed a conflict with Simple Membership where a member logging in was not also logged into their WordPress user account, breaking is_user_logged_in() checks, .htaccess protection and user synchronization.
- Security: Fixed a vulnerability in the Forminator integration where a solved Turnstile challenge could potentially be reused to bypass verification, as the validation was cached against a form value instead of the single-use token. (Reported by Meher Sudhakar Abbireddi via WPScan.)
Version 1.41.1 – 22nd June 2026
- Tweak: Added a view button to show the secret key in the settings page, which is hidden by default.
- Tweak: Made a few small changes to the settings page.
- Tweak: On the Ultimate Member login form, added a check to prevent further login validation if Turnstile failed.
- Fix: Fixed an issue with the Ultimate Member login form since the last update.
Version 1.41.0 – 18th June 2026
- New: Added a new “Analytics” option which when enabled will start tracking some basic analytics data for Turnstile form submissions. This includes the number of successful and failed submissions, and the reasons for any failures.
- Improvement: Added some new tabs to the settings page, with a “Settings” tab for all the main settings, a new “Analytics” tab for the new analytics feature and the debug logging, and an “Import” tab for the import/export feature.
- Tweak: Updated the verified transient check to work better with certain 2FA plugins.
- Tweak: Updated the Contact Form 7 integration to now show the correct error message when the Turnstile check fails.
- Tweak: The “Widget Label Text” is now hidden when “Interaction Only” is selected, and only displayed when the widget actually requires an interaction.
- Tweak: Added spacing below the widget when it shows in “Interaction Only” mode, which is hidden when the widget is not displayed.
- Tweak: The Turnstile widget now re-renders shortly after clicking the login button on the wp-login.php page, to ensure a fresh token is ready in case of a failed login.
- Fix: Fixed an issue with Turnstile not rendering on the block checkout “pay for order” page in some cases.
- Fix: Fixed the “Show Widget Label Text” option not displaying on Elementor forms.
- Fix: Fixed the “Logged In Users” whitelist option not bypassing Turnstile on Contact Form 7 submissions.
- Fix: Fixed the “Appearance Mode” setting not being applied to Elementor forms and the WooCommerce block checkout, causing the widget to always display even when “Interaction Only” was selected.
- Other: Renamed the plugin from “Simple CAPTCHA Alternative with Cloudflare Turnstile” to “Simple CAPTCHA with Cloudflare Turnstile”.
Version 1.40.0 – 29th May 2026
- New: Added an option to enable Turnstile on the WooCommerce Account Details form.
- Tweak: Added a warning message to the “Logged In Users” whitelist option.
- Tweak: Added an additional check to prevent the Turnstile widget from rendering twice on WooCommerce checkout in rare cases.
- Tweak: Prevent any kind of form submission (shortkeys etc) for the default login form when Turnstile is not completed, if the “Disable Submit Button” option is enabled.
- Tweak: Prevent any kind of form submission (shortkeys etc) for Elementor forms when Turnstile is not completed #84.
- Tweak: Force-render inline script now loads via wp_add_inline_script in the footer, fixing rendering issues in some cases when “Defer Scripts” is disabled.
- Fix: Fixed widget size setting (Flexible/Compact) not being applied to Elementor forms.
- Fix: Fixed a mobile performance issue in some cases. Replaced the fixed 200ms setTimeout fallback which could cause scroll-locking and double-rendering.
- Fix: Performance plugin compatibility hooks now register correctly regardless of which performance plugin is active.
- Fix: Improved WooCommerce checkout login form Turnstile rendering, which was not working for some themes.
- Fix: Fixed a JS error on WooCommerce classic checkout when the Blocks checkout store isn’t registered.
- Fix: Fixed duplicate Turnstile widget on Paid Memberships Pro login page.
- Fix: Fixed a JS error with wpDiscuz integration when Perfmatters plugin was active.
Version 1.39.1 – 1st May 2026
- Fix: Fixed a potential issue with the Turnstile check on login forms failing in certain cases when it runs multiple checks in the same request.
Version 1.39.0 – 20th April 2026
- New: Added integration for the “SureForms” plugin.
- New: Added integration for the “Sunshine Photo Cart” plugin (#70).
- Tweak: Adjusted the “Widget Label Text” alignment in some cases so it always shows above the widget.
Version 1.38.4 – 17th April 2026
- Fix: Fixed Turnstile verification failures on WooCommerce checkout caused by payment gateway plugins (e.g. PayPal Commerce, Amazon Pay, Mollie) consuming the single-use token during pre-checkout AJAX validation requests.
- Fix: Fixed a fatal error occurring on pages where WooCommerce has been selectively disabled (e.g. via Plugin Organizer).
Version 1.38.3 – 17th April 2026
- Tweak: Made some tweaks to the WooCommerce checkout duplicate submission check, with a longer expiration for the transient, and improved the auto re-render for Turnstile on payment error in certain cases.
- Tweak: Small tweak to the Contact Form 7 integration code with a basic static duplication check.
Version 1.38.2 – 16th April 2026
- Tweak: Added the transient based duplicate submission check to WooCommerce checkout, to prevent potential duplicate submission check failing issues since the last update.
- Tweak: Added improved support for Gravity Forms multi-page forms, to prevent the duplicate submission check from failing on page 2 and beyond.
Version 1.38.1 – 13th April 2026
- Tweak: Replaced all PHP session usage with WordPress transients for the duplicate submission checks, to prevent full-page caching from being broken by the PHPSESSID cookie and Cache-Control headers.
- Tweak: An invalid-input-secret error from Cloudflare no longer disables Turnstile on all forms. Instead, the admin is notified and a soft re-test prompt is displayed on the settings page.
- Security: Fixed a broken authentication vulnerability on WooCommerce checkout potentially allowing one successful Turnstile submission to be reused for multiple checks. (Reported by David Marín via Patchstack.)
Version 1.38.0 – 6th April 2026
- New: Added a “Refresh Timeout” option to the advanced settings.
- Performance: The Cloudflare health check (used by failover mode) is now cached for 2 minutes, preventing repeated HTTP requests on every form render.
- Tweak: Added missing WooCommerce ‘cart_checkout_blocks’ and ‘product_block_editor’ feature compatibility declarations.
- Fix: Fixed a text domain typo in the WooCommerce Store API integration.
- Fix: Improved the WP Discuz integration to properly validate and block submissions when the Turnstile check fails, and now honors the whitelist.
- Fix: Fixed an issue with Turnstile not loading on Elementor popup forms in some cases.
- Fix: The disable submit option should now work correctly on Elementor forms.
- Fix: The disable submit option should now work correctly on Contact Form 7 forms.
- Fix: Fix for WooCommerce block checkout sometimes rendering the Turnstile widget twice.
- Fix: Fixed a “Invalid type for container” JavaScript error with the wpDiscuz integration.
- Fix: Fixed the right alignment styling for bbpress.
- Fix: Fixed an issue where Turnstile widgets would repeatedly render when a browser tab is left open for extended periods.
- Fix: Fixed an issue where CF7 forms would show “One or more fields have an error” when SCT is active but the form doesn’t use the SCT turnstile shortcode.
- Fix: Fixed an issue with scripts not being enqueued properly in some cases.
- Dev: Fixed the missing prefix for the add_data_attribute function.
- Dev: Changed all include() calls to include_once() to prevent fatal errors if the plugin file is loaded more than once.
- Dev: Fixed cfturnstile_check() returning false instead of array( ‘success’ => false ) when API keys are not set.
- Security: Made a few small precautionary security enhancements (missing ABSPATH check, and sanitized REQUEST_URI).
Version 1.37.0 – 12th January 2026
- Improvement: Improved the Elementor integration to work better in more cases, and with Elementor popups.
- Improvement: Added an alignment option for the Elementor integration.
- Tweak: Removed the “Integration Method” option for Elementor forms. It will now load globally but has an option to choose where scripts are loaded.
- Tweak: Small tweaks to the settings page.
- Tweak: Added a copy button for the debug log.
- Fix: Fixed a new issue some websites were experiencing with WooCommerce block checkout not working with Turnstile.
- Fix: Fixed an error “attempt to read property success on null” showing in some cases.
- Fix: Fixed the widget label not showing in some cases, on the comments form.
- Fix: Fixed WooCommerce checkout in some cases not re-rendering Turnstile after payment errors. It should now re-render correctly in all cases to prevent Turnstile errors.
- Fix: Fixed an issue with Forminator forms when using file upload fields.
Version 1.36.1 – 31st December 2025
- Fix: Fixed an issue with the disable submit feature not working in some cases.
Version 1.36.0 – 30th December 2025
- New: Added new “Failsafe Mode” option in the advanced settings.
- New: Added the ability to enable and set a custom “widget label text” that is shown above the Turnstile widget.
- New: Added an option to enable “Resource Hint (Preconnect)” in the advanced settings.
- Tweak: Improved the code for getting the user IP address for the Turnstile verification request. Helps with certain server setups and proxy services.
- Tweak: Changed Turnstile default render to “auto” instead of “explicit”.
- Tweak: Removed the user ID check on WordPress login Turnstile check, so it still runs if the username is invalid.
- Tweak: Added “header” info to the debug log entries.
- Fix: Fixed an issue with Kadence Forms integration in some cases.
Version 1.35.0 – 27th October 2025
- New: Improvement to Elementor integration to work better with Elementor element caching.
- New: Added new “Integration Method” for the Elementor integration. The “Load Scripts Globally” option may work better for certain types of caching.
- Tweak: Updated the Elementor JS code from using jQuery to vanilla JS.
- Tweak: Added an option in the “Advanced Settings” to toggle “Performance Plugin Compatibility”.
- Tweak: Ultimate Member forms now have a unique fixed ID instead of a random one each time.
- Tweak: For WooCommerce checkout, added an alternative check for duplicate execution within a single request.
- Tweak: Made some changes to the settings page, updated the setup guide link, and updated donation/sponsor details.
- Fix: Fixed an issue with Turnstile being ignored by certain payment methods like PayPal express, in some cases.
- Fix: Fixed an issue when the “WordPress Login” option is enabled, but “WooCommerce Login” is disabled, the WooCommerce login still gave a verification failed error.
Version 1.34.3 – 16th October 2025
- Fix: Fixed an issue with some express payment methods. These will now automatically skip the Turnstile check preventing the error message from showing.
Version 1.34.2 – 15th October 2025
- Fix: Fixed an issue with WooCommerce checkout in some cases.
Version 1.34.1 – 10th October 2025
- Fix: Fixed an issue with custom login forms causing an error since version 1.34.0.
- Fix: Fixed an issue with the “Extra Failure Message” when using quotes in the text.
Version 1.34.0 – 9th October 2025
- New: Added ability to define the Site Key and Secret Key in the wp-config.php file, using the constants “CF_TURNSTILE_SITE_KEY” and “CF_TURNSTILE_SECRET_KEY”. This is useful for developers, or if you want to prevent the keys from being changed in the admin settings page.
- New: Added an export/import tool to the settings page, to allow you to easily export your settings and import them on another website.
- Tweak: Updated the WooCommerce checkout “cfturnstile_checkout_checked” session to clear in more cases to prevent potential issues.
- Fix: Added better support for smart payment buttons on WooCommerce checkout, to prevent Turnstile from blocking the checkout in some cases.
- Fix: Fixed an issue with the “Pay for Order” page when using block checkout.
- Fix: Fixed an issue with the wp_login_form() function integration.
Version 1.33.1 – 5th September 2025
- Other: Renamed the plugin from “Simple Cloudflare Turnstile” to “Simple CAPTCHA Alternative with Cloudflare Turnstile” due to trademark guidelines.
Version 1.33.0 – 4th September 2025
- Tweak: Added some better compatibility with certain performance plugins that may be minifying/delaying JavaScript and causing issues with Turnstile loading.
- Fix: Potential fix for some websites experiencing issues with Elementor forms.
Version 1.32.3 – 21st August 2025
- Fix: Fixed an issue with the CheckoutWC integration.
Version 1.32.2 – 7th August 2025
- Fix: Fixed an issue with the Turnstile widget on Elementor forms always being forced to dark mode.
- Fix: Fixed an issue with Turnstile rendering twice on CheckoutWC checkout page in some cases.
Version 1.32.1 – 7th August 2025
- Improvement: Improved the CheckoutWC integration (#53).
- Tweak: Added missing MailPoet JS callback for the disable submit button.
- Fix: Fixed a error in the woocommerce.js file.
Version 1.32.0 – 7th July 2025
- New: Added support for the “WP User Manager” plugin.
- Improvement: Fixed the Elementor integration (contact forms, login form, and popups) and made some improvements to the code.
- Tweak: Added a check to see if the Turnstile script has already been enqueued.
- Fix: Fixed an issue with some ajax form plugins, where the Turnstile widget was re-rending duplicates each time there was a failed submission.
- Fix: Fixed a potential PHP error with the WP login.
Version 1.31.0 – 27th May 2025
- New: Added support for the wp_login_form() function, so Turnstile can be added to the login form generated by this function.
- Tweak: Made a few design tweaks to the admin settings page.
- Fix: Change from gform_pre_submission to gform_validation hook for Gravity Forms integration. (#40).
- Fix: Fixed “wp is not defined” error on WooCommerce checkout in some cases.
Version 1.30.0 – 12th February 2025
- New: Added Kadence Forms integration.
- New: Added MailPoet integration.
- Fix: Fixed “Cannot read properties of null (reading ‘dataset’)” error with WooCommerce block checkout.
- Fix: Fixed an issue with Turnstile loading twice in some cases.
- Fix: Fixed an issue with the “Disable Submit Button” option not working.
- Fix: Gravity Forms integration rerender on validation. (#38).
- Tested with WordPress 6.7.2
- Tested with WooCommerce 9.6.1
Version 1.29.0 – 14th January 2025
- New: Added Jetpack Forms integration. (#30).
Version 1.28.1 – 13th January 2025
- Fix: Fixed a undefined array key “error_code” error showing in some cases.
- Fix: Fix CheckoutWC implementation. (#33).
- Fix: Fix warning when cf-turnstile-response not present in Fluent Forms. (#32).
Version 1.28.0 – 17th December 2024
- New: Added Checkout block and Store API support. (Thanks @senadir)
- Fix: Fixed an issue with Turnstile re-rendering when it does not need to in some cases, on WooCommerce checkout.
- Other: Tested with WooCommerce 9.4.3
Version 1.27.1 – 10th November 2024
- New: Added a “Widget Size” option to the advanced settings section.
- Tweak: Moved the “Appearance Mode” option to the advanced settings section.
- Tweak: Added support for Elementor PRO Elements.
- Tweak: Added the new supported languages.
- Fix: Fixed a “WPCF7_TagGenerator::add()” error with the Contact Form 7 integration.
- Fix: Prevent Turnstile from showing on the order received page in some cases, such as with the CheckoutWC plugin.
- Other: Tested with WordPress 6.7.0
- Other: Tested with WooCommerce 9.3.3
Version 1.27.0 – 7th August 2024
- New: Added a new option in the admin settings page to “enable debug logging of Turnstile form submission events”. This will add a log event every time a form is submitted with Turnstile enabled, and display the log at the bottom of the settings page.
- Fix: Fixed issue with Turnstile not rendering on Elementor popup forms.
- Fix: Fixed issue with Turnstile not resetting properly on Contact Form 7 causing it to display twice on submission error.
- Fix: Fixed issue with Turnstile showing twice in some cases.
Version 1.26.6 – 27th July 2024
- Fix: Fixed issue with Turnstile showing twice on Forminator forms in some cases.
Version 1.26.5 – 26th July 2024
- Fix: Fixed issue with Turnstile showing twice on Elementor forms.
Version 1.26.4 – 26th July 2024
- Fix: Tweak to help prevent some new rare cases where the Turnstile widget was being shown twice in some cases.
- Fix: Fixed an issue with the WooCommerce password reset form when using a hide admin login URL plugin like “WPS Hide Login”.
- Other: Tested with WordPress 6.6.1
Version 1.26.3 – 18th July 2024
- Tweak: Added a message to state that it is not currently compatible with WooCommerce “block-based” checkout.
- Fix: Fixed an issue with not being able to save the WP Forms integration settings if using the Pro version of WP Forms.
- Other: Tested with WordPress 6.6.0
- Other: Tested with WooCommerce 9.1.2
Version 1.26.2 – 8th May 2024
- Fix: Fixed an issue with the new “ONLY enable for these Membership IDs” option with the MemberPress integration.
Version 1.26.0 – 8th May 2024
- New: Added option to whitelist certain “User Agents” in the “Whitelist Settings” section to the settings page.
- Tweak: Made a few small changes to the admin settings page.
- Dev: Added a filter (“cfturnstile_widget_disable”) to allow skipping Turnstile check and hiding the Turnstile widget programmatically.
- Code Fork: auutstudio/simple-cloudflare-turnstile-sometimes
— New: Added an option to only show Turnstile on specific MemberPress registration forms, based on a declared list of Membership Product IDs.
— Tweak: Clarify that the Whitelist IP option does not support wildcards.
— Tweak: Clarify that WPForms has a redundant place in its own settings to configure Turnstile.
Version 1.25.0 – 7th November 2023
- New: Added compatibility with the “Clean Login” plugin.
- New: Added an option to only show Turnstile on the default WordPress login and registration form, and not on any other similar forms added by plugins. This is enabled by default for new installs.
- New: Added a new “Extra Failure Message” option, in advanced settings, which will show a custom notice to the user, under the widget, if the Turnstile challenge fails.
- New: Added a new “Defer Scripts” option, in advanced settings, to decide whether the javascript files will be deferred or not. This is enabled by default.
- Tweak: Modified the code for WooCommerce login check.
- Tweak: Added some information about other form plugins that are not currently supported by our plugin, if they are installed.
- Tweak: Removed 100ms delay on Turnstile widget render.
- Tweak: Added an “Advanced Settings” tab to the settings page, and moved some settings into there.
- Tweak: A few small changes to the admin settings page.
- Tweak: The “Language” setting is now ordered alphabetically.
- Tweak: Improvements to the Blocksy integration.
- Fix: Fixed a compatibility issue with the EDD Auto Register plugin.
- Dev: Moved around some of the plugin code into different files.
- Dev: Added some filters for the WP Login and WP Register check functions.
- Other: Tested with WordPress 6.4.0
Version 1.24.0 – 9th October 2023
- New: Added integration with the “Paid Memberships Pro” plugin.
Version 1.23.3 – 4th October 2023
- Tweak: Added some additional sanitization and escaping to the plugin code, as an extra security precaution, and to meet WordPress coding standards better.
- Tweak: Added a class to the line break displayed below the Turnstile widget, so it can be hidden or edited with CSS if needed.
- Fix: Fixed issue with Turnstile not loading on WooCommerce checkout login form in some cases.
Version 1.23.2 – 22nd September 2023
- Fix: Fixed a security vulnerability with the Gravity Forms integration.
- Tweak: Minified the inline scripts on Contact Form 7 and Gravity Forms integrations.
- Tweak: Small tweak to styles on wp-login.php page in some cases.
- Other: Tested with WordPress 6.3.1
- Other: Tested with WooCommerce 8.1.1
Version 1.23.1 – 24th August 2023
- Fix: Fixed an issue with “Payment Methods to Skip” toggle on settings page.
Version 1.23.0 – 24th August 2023
- New: Added “Whitelist Settings” section to the settings page, with options to whitelist logged in users, or certain IP addresses.
- New: Added support/integration for the CheckoutWC plugin.
- Tweak: Turnstile will now be disabled on all forms until the “Test Response” is successfully completed on the settings page. An admin error message will now show if the keys are set but the test is not complete.
- Tweak: If Turnstile returns error code “invalid-input-secret” at any point, it will automatically disable itself and requires a “Test Response” to be completed again in the settings page.
- Tweak: Modified …
