Hello,
I have a Contact Form 7 form placed inside a WoodMart popup
(Popup Builder), opened from a “Quick order” button on single
product pages.
Contact Form 7’s built-in Cloudflare Turnstile integration is
enabled. The Turnstile widget renders correctly on a normal page
(our Contacts page), but never renders inside the popup.
Diagnostics from the browser console on a product page:
1. document.querySelectorAll(‘.cf-turnstile’).length
-> 2 (placeholders exist)
2. document.querySelectorAll(‘.cf-turnstile iframe’).length
-> 0 (widget never created, even after 695 seconds with the
popup open)
3. Walking up the DOM from the placeholder:
DIV.wpcf7-turnstile cf-turnstile -> block / visible
FORM.wpcf7-form init -> block / visible
DIV.wpcf7 js -> block / visible
DIV.elementor-widget-container -> block / visible
DIV.elementor-element … -> block / visible
DIV.wd-popup-inner wd-entry-content -> block / visible
DIV.wd-popup-builder wd-popup wd-deferred wd -> display: none
The wd-deferred container stays display:none, and Cloudflare
Turnstile does not create its iframe inside a hidden container.
Calling turnstile.render() manually does create the widget, which
confirms the cause.
Questions:
1. Is there a setting to disable the deferred loading for a
specific popup?
2. Is there a JavaScript event fired when a popup opens, that we
can hook into to re-render the widget?
WoodMart theme: 8.6.1
Woodmart Core: 1.1.9
Contact Form 7: 6.1.7
WordPress: 7.1.1