=== Defer for Contact Form 7 ===
Contributors: ryabininvitaliy, freemius
Tags: contact form 7, cf7, performance, pagespeed, defer
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Takes Contact Form 7 off the critical rendering path: moves its head scripts to the footer and loads the form CSS asynchronously. No PageSpeed hit.

== Description ==

On every page Contact Form 7 loads its dependencies (wp-hooks, wp-i18n) and its CSS into the `<head>`, blocking first paint. This plugin fixes that:

* **Defer CF7 core** — moves wp-hooks/wp-i18n to the footer (you cannot `defer` them: an inline `wp.i18n.setLocaleData` block runs synchronously and would throw "wp is not defined"). CF7's scripts leave the critical path.
* **Async CSS** — the form stylesheet loads via `media=print` + onload-swap.

Both optimizations are idempotent and safe on every page. Strict dependency: with Contact Form 7 inactive, the plugin does nothing.

= A note on jQuery =

This plugin does NOT defer jQuery — on purpose. Deferring jQuery is only safe when EVERY jQuery-dependent script on the site is also deferred or in the footer; on an arbitrary site that is not guaranteed and breaks inline scripts in the head.

== Pro version ==

Defer for Contact Form 7 Pro adds lazy-loaded Google reCAPTCHA v3 — spam protection without a PageSpeed hit:

* Google's api.js loads only on the first interaction with a form, so it never appears in Lighthouse/PSI.
* The score check is server-side; a fresh single-use token is fetched for every submission.
* The badge is hidden with the required Google disclaimer (GDPR-friendly); configurable score threshold and action label.

The free version stays fully functional on its own.

== Installation ==

1. Upload the `defer-for-contact-form-7` folder to `/wp-content/plugins/`, or install the ZIP via Plugins → Add New → Upload.
2. Activate the plugin. Contact Form 7 must be active.
3. Both optimizations are on by default — there is nothing else to configure.
4. To toggle them, go to **Contact → Performance**.

== Frequently Asked Questions ==

= Does this work with caching/optimization plugins? =

Yes, but minifiers that combine and reorder scripts can interfere with the head→footer move. Test with your cache plugin enabled.

= Does the plugin send any data anywhere? =

No. It makes no external requests and stores no personal data.

== Screenshots ==

1. Plugin settings page under Contact → Performance: defer/async toggles and the Pro reCAPTCHA v3 section.

== Support ==

Questions, bug reports or feature requests: https://www.linkedin.com/in/vitalii-ryabinin/

== Changelog ==

= 1.0.0 =
* Initial release: CF7 core defer + async CSS.
