

A gated YouTube embed as a visitor sees it: a server-rendered placeholder with a named panel, a real "Load" button and a working fallback link — nothing is requested from the provider until the click.
Every YouTube video, Google Map and Instagram post on your site contacts its provider the moment the page opens — before the visitor has agreed to anything. Calucon Third-Party Embed Gate holds those embeds behind a click-to-load placeholder. Until the visitor presses “Load”, nothing is requested from the provider and nothing is stored on their device — not by the provider, and not by this plugin. That is the two-click solution (Zwei-Klick-Lösung), done properly: no cookie banner, no consent platform, no account, no subscription. It works the moment it is activated.
See it on the live demo — all 36 providers on one page, 30 of them with live content, and zero third-party requests until you press a button — or read the details on the plugin page.
A plain request to www.youtube.com/embed/… — no playback, no scripts run — sets six cookies, four of them identifiers that live about six months (measured August 2026). Every visitor gets them on every page with a video, whether or not they ever press play. The same request to www.youtube-nocookie.com sets none, and that is where this plugin loads YouTube from after the click.
data-src), the loader scripts and stylesheets some embeds bring along, and content delivered over AJAX and the REST API (“load more”, infinite scroll).youtube-nocookie.com, Vimeo with dnt=1. Rebuilds every embed from an attribute safelist — sandbox preserved, autoplay never survives — and strips the preconnect and dns-prefetch hints that would contact the provider early.Every month those claims are re-tested on a real WordPress against the current versions of the plugins that are free to install; the ones that are not (WP Rocket, Borlabs Cookie, WPML, Weglot, Cookiebot’s banner) are tested against simulations of their documented behaviour.
Calucon Third-Party Embed Gate is a technical measure, not a consent management platform. It prevents the embed providers’ requests until the visitor acts, and the click is consent for that one embed (or, with consent memory on, for the scope you configure). It does not produce consent records for accountability purposes, it does not audit your site for other trackers, and it makes no legal claim about your site. Your privacy policy still has to name the providers you embed from, and your legal bases remain yours. If you need a documented consent record, you need a consent management platform.
templates/placeholder.php to {your-theme}/calucon-embed-gate/placeholder.php..cg-embed (--cg-bg, --cg-fg, --cg-accent, …) for restyling without specificity wars.wp calucon-embed-gate scan (is every embed gated? --format=json for CI and automation) and wp calucon-embed-gate providers. Both read-only.calucon_embed_gate_providers, calucon_embed_gate_provider_for_url, calucon_embed_gate_should_gate, calucon_embed_gate_is_own_host, calucon_embed_gate_own_hosts, calucon_embed_gate_placeholder_html, calucon_embed_gate_payload, calucon_embed_gate_note_text, calucon_embed_gate_action_text, calucon_embed_gate_fallback_url, calucon_embed_gate_www_equivalence, calucon_embed_gate_cmp_config, calucon_embed_gate_asset_version, calucon_embed_gate_the_content_priority, calucon_embed_gate_render_block_priority, plus the calucon_embed_gate_before_render, calucon_embed_gate_embed_gated and calucon_embed_gate_flush_caches actions. Each one’s signature, when it fires and what to return are documented in docs/customizing.md, which ships inside the plugin (wp-content/plugins/calucon-third-party-embed-gate/docs/customizing.md) and is readable on GitHub. Adding a provider is a ten-line filter in functions.php.cg- classes, data-cg-* attributes, --cg-* custom properties), the documented hooks, the template variables, the settings keys and the WP-CLI commands do not change across minor releases; provider descriptors and the tested-platform lists are data and may. docs/customizing.md ships inside the plugin and is written for developers and AI coding agents alike.This plugin makes no request to any external service, on any page, at any time. It contacts no API, loads no remote script, font, image or update check, and sends no telemetry. Its entire purpose is the opposite direction: it prevents your pages from contacting embed providers.
Third-party content enters the picture only after a visitor clicks the “Load” button on an embed placeholder. At that moment the visitor’s browser loads that one embed from its provider (for example YouTube, Vimeo or Google Maps) — exactly as it would have without this plugin, except that it now happens on the visitor’s request instead of automatically. Each placeholder names the provider and, when the optional link is turned on under Providers, links the provider’s privacy policy before the click. The provider hostnames in the plugin’s source code exist solely so it can recognise and gate that content. No data is sent anywhere by the plugin itself.