Warum das wichtig ist
Jemand fügt eine YouTube-URL ein. WordPress macht ein Iframe daraus. Von da an kontaktiert der Browser jedes Besuchers Google, bevor irgendjemand gefragt wurde.
Gemessen bei einem einfachen Aufruf, ohne Wiedergabe und ohne ausgeführte Skripte:
6
Cookies bei einem Aufruf von www.youtube.com/embed/… – vier davon Kennungen mit rund sechs Monaten Laufzeit.
0
Cookies bei www.youtube-nocookie.com – von dort lädt dieses Plugin YouTube nach dem Klick.
| Aufruf | Gesetzte Cookies |
|---|---|
www.youtube.com/embed/… | 6 – vier davon Kennungen mit rund sechs Monaten Laufzeit |
www.youtube-nocookie.com/embed/… | 0 |
| Eine oEmbed-Vorschau von WordPress zu WordPress | 1, Laufzeit ein Jahr |
Die übliche Antwort darauf ist ein Cookie-Banner. Das ist die teure Variante: eine Plattform, die betrieben werden muss, ein Nachweis, der aufbewahrt werden muss, eine Abfrage bei jedem Besuch, und langsamere Seiten. Die Zwei-Klick-Lösung beseitigt die Pflicht, statt sie zu verwalten – wenn nichts von Dritten lädt, bevor der Besucher es verlangt, gibt es beim Seitenaufruf nichts anzukündigen. Der Klick ist die Einwilligung.
Wie es funktioniert
Beiträge werden geschrieben wie bisher. URL einfügen, WordPress erzeugt die Einbettung, und im Block-Editor sehen Redaktionen die gewohnte Einbettung.
Besucher sehen stattdessen einen Platzhalter. Er wird auf dem Server gerendert und ist deshalb da, bevor überhaupt JavaScript läuft: der Name des Anbieters, ein Satz dazu, was das Laden bedeutet, ein echter Laden-Button und ein einfacher Link zum Inhalt.
Mit dem Klick lädt genau diese eine Einbettung – von der datenschutzfreundlichen Adresse, sofern der Anbieter eine hat. Sonst ändert sich auf der Seite nichts, und für Einbettungen, die niemand angefordert hat, lädt nichts.
Live ansehen
Das hier ist kein Screenshot. Das Plugin läuft auf dieser Seite, und darunter steht eine echte YouTube-Einbettung, die es gesperrt hat: um sie anzuzeigen, wurde nichts bei YouTube angefragt. Erst der Druck auf den Button lädt das Video – von youtube-nocookie.com.
Die Demo-Seite führt alle Anbieter auf einer Seite vor. Entwicklerwerkzeuge öffnen, den Netzwerk-Tab beobachten und neu laden: jede Anfrage geht an diese Seite. Ein Klick auf einen Button, und nur dieser eine Anbieter erscheint.
Was es bietet
- Wirkt sofort nach der Aktivierung Keine Konfiguration, kein Konto, kein externer Dienst – aktivieren, und jede fremde Einbettung der Seite ist gesperrt.
- Serverseitig gerenderte Platzhalter Ersetzt fremde Iframes, Einbettungs-SDK-Skripte und altes
<embed>/<object>-Markup schon auf dem Server – das funktioniert also auch ohne JavaScript, und der Ersatzlink führt immer zu einem echten Ziel. - Sperrt nach Host, nicht nach Positivliste 36 Einbettungstypen werden namentlich erkannt – jeder, den WordPress von Haus aus anbietet – und alles andere Fremde wird ohnehin gesperrt. Der Fehlerfall ist eine weniger genaue Beschriftung, nie ein ungesperrter Tracker.
- Übersteht minifiziertes HTML Ohne Anführungszeichen an den Attributen, mit Zeilenumbrüchen mitten im Tag – der mit Abstand häufigste Grund, warum konkurrierende Umsetzungen die Prüfung bestehen und im Betrieb dann stillschweigend versagen. Auch Lazy-Loading-Markup (
data-src) und Inhalte, die per AJAX oder REST-API nachgeladen werden – „Mehr laden“, Endlos-Scrollen – , sind gesperrt. - Datenschutzfreundliche Adressen Wo ein Anbieter eine hat, lädt die Einbettung nach dem Klick von dort:
youtube-nocookie.com, Vimeo mitdnt=1. - Neu aufgebaut nach Freigabeliste
sandboxbleibt exakt erhalten,autoplayüberlebt nie, Inline-Styles und Event-Handler werden nie übernommen. - Barrierefrei von Haus aus Benannte Gruppe, ein echter Button, sichtbarer Fokus, ausreichender Kontrast, und der Fokus bleibt nach dem Laden erhalten – null axe-core-Verstöße in der CI.
- Auch Feeds und Ressourcen-Hinweise Entfernt
preconnect– unddns-prefetch-Hinweise auf gesperrte Anbieter und nimmt Einbettungen aus Feeds und Textauszügen heraus, statt dort einen Platzhalter zu zeigen, den niemand anklicken kann. - Posterbilder aus der eigenen Mediathek Optional je Einbettung ein Posterbild – nie beim Anbieter geholt – und ein optionaler Link auf dessen eigene Datenschutzerklärung in jedem Platzhalter.
- Umgestalten ohne CSS Farben (mit eigenem Satz für den Dunkelmodus, und jede Palettenfarbe des eigenen Themes, beim Namen ansprechbar), Ecken, Ränder, Schatten, Abstände, Größe und Form des Buttons und die Lage des Platzhalters über einem Posterbild – alles mit Live-Vorschau und automatischer Lesbarkeitsprüfung. Vier fertige Ausgangspunkte, falls man gar nicht erst schrauben will.
- Anbieter ergänzen ohne Code Einen beliebigen Einbettungs-Host im Tab Anbieter eintragen, und er bekommt dieselben Hinweis-, Button-, Icon- und Datenschutzlink-Optionen wie ein eingebauter. Unbekannte Hosts werden ohnehin gesperrt – das gibt dem eigenen nur einen Namen.
- Optionales Merken der Einwilligung Mit einem Widerrufs-Block oder dem Shortcode
[calucon_embed_gate_withdraw]für die eigene Datenschutzseite, und einer optionalen Brücke zur vorhandenen Consent-Plattform. Beides ist standardmäßig aus, und beides bleibt im Zweifel gesperrt. - Funkt nie nach Hause Keine Telemetrie, keine CDN-Dateien, keine ausgehende Anfrage vom eigenen Server oder aus den Browsern der Besucher, auf keinem Weg und aus keinem Grund.
Sprachen
EnglishDeutschDeutsch (Sie)Deutsch (Österreich)Deutsch (Schweiz)Deutsch (Schweiz, Du)
Die Website-Sprache einstellen, und das Plugin zieht mit – beim Platzhalter, den die Besucher sehen, in allen fünf Tabs der Einstellungen und im Editor. Selbst eingetragene Texte sind für WPML und Polylang zur Übersetzung angemeldet; weitere Sprachen entstehen auf translate.wordpress.org.
Ein Blick in die Einstellungen


Funktioniert mit dem, was schon läuft
Caching- und Optimierungs-Plugins. Gesperrt wird auf dem Server, gespeichert wird also die bereits gesperrte Seite:
W3 Total CacheWP Super CacheLiteSpeed CacheAutoptimizeWP Fastest CacheSiteGround OptimizerWP Rocket
Consent-Plattformen, über die optionale Brücke. Sie liest nur die Antwort der Plattform; bei jeder anderen Plattform und ohne Antwort bleibt die Sperre bestehen:
WP Consent APIComplianzCookiebotCookieYesBorlabs Cookie 3Real Cookie Banner
Page-Builder. Die HTML- und Video-Widgets von Elementor werden von Haus aus gesperrt. Rendert ein Builder außerhalb der Inhaltsfilter von WordPress, liest das Plugin mit „Die gesamte Seitenausgabe sperren“ stattdessen die fertige Seite.
Mehrsprachige Websites:
WPMLPolylangTranslatePressWeglot
Diese Angaben werden monatlich auf einem echten WordPress mit den aktuellen Versionen der frei installierbaren Plugins nachgeprüft. Die übrigen – WP Rocket, Borlabs Cookie, WPML, Weglot und das Banner von Cookiebot – werden anhand von Simulationen ihres dokumentierten Verhaltens geprüft.
Installation
- Aus dem eigenen Dashboard: Plugins → Installieren, nach „Calucon Third-Party Embed Gate“ suchen, installieren, aktivieren.
- Aus dem Verzeichnis: wordpress.org/plugins/calucon-third-party-embed-gate.
- Aus dem Quellcode: das neueste GitHub-Release, dann Plugins → Installieren → Plugin hochladen.
Bis August 2026 hieß es Consent Gate. Der Name änderte sich während der Prüfung bei WordPress.org, um klar zu machen, dass es fremde Einbettungen sperrt und keine Consent-Management-Plattform ist; in 0.9.0 wurden die internen Bezeichner passend umbenannt – Filter, der Shortcode [calucon_embed_gate_withdraw], der Widerrufs-Block, der CLI-Namensraum wp calucon-embed-gate und das Template-Verzeichnis im Theme. Das geschah bewusst, bevor der Eintrag im Verzeichnis live ging, solange es keine installierte Seite gab, die daran zerbrechen konnte; Altnamen gibt es nicht. Die Klassen .cg-embed, die Custom Properties --cg-* und die Attribute data-cg-* sind unverändert, eigenes CSS gilt also weiter.
Mit dem Aktivieren ist die Einrichtung erledigt – alles auf der Einstellungsseite ist optional.
Setzt WordPress 5.9 oder neuer und PHP 7.4 oder neuer voraus. Kein Build-Schritt, keine Laufzeitabhängigkeiten.
Anpassen
- Einstellungsseite (Anbieter / Erkennung / Design / Einwilligung merken / Status und Werkzeuge): Schalter je Anbieter, eigene Button- und Hinweistexte, Listen für eigene und nie zu sperrende Hosts, Gestaltungs-Voreinstellungen und Farbwähler mit sofortiger Lesbarkeitsprüfung – ganz ohne CSS.
- CSS-Custom-Properties auf
.cg-embed(--cg-bg,--cg-fg,--cg-accent) zum Umgestalten, ohne gegen die Spezifität anzukämpfen. - Template-Überschreibung im Theme:
templates/placeholder.phpnach{eigenes-theme}/calucon-embed-gate/kopieren. - Filter für alles Wesentliche – ein Anbieter mehr ist ein zehnzeiliger Filter in
functions.php. - WP-CLI:
wp calucon-embed-gate scanbeantwortet „ist jede Einbettung dieser Seite gesperrt?“ und spricht JSON, läuft also auch in der CI.
API-Referenz (englisch) – jeder Filter und jede Action mit Signatur, Auslösepunkt, Rückgabevertrag und lauffähigem Beispiel, dazu das Options-Schema, die WP-CLI-Befehle, der Markup-Vertrag des Platzhalters und die JavaScript-Schnittstelle im Frontend.
Anpassungs-Leitfaden – derselbe Stoff, aber begründet statt aufgelistet: was eine Anpassung nicht brechen darf, und warum.
Fragen, die tatsächlich gestellt werden
Erfüllt meine Seite damit die DSGVO?
Das kann kein Plugin zusichern, und dieses tut es nicht. Calucon Third-Party Embed Gate ist eine technische Maßnahme: es verhindert die Anfragen und den Speicherzugriff, den sie auslösen, bis der Besucher es verlangt. Ob die Verarbeitung einer Seite insgesamt rechtmäßig ist, hängt von Dingen ab, die ein Plugin nicht wissen kann. Die eigene Datenschutzerklärung muss die Anbieter, von denen eingebettet wird, weiterhin benennen.
Brauche ich dann kein Cookie-Banner mehr?
Für die Einbettungen nicht. Wenn beim Seitenaufruf nichts von Dritten lädt, gibt es beim Seitenaufruf nichts anzukündigen. Wenn der Rest der Seite Cookies setzt, die eine Einwilligung brauchen – Analyse, Werbung, ein Marketing-Pixel – ist das eine eigene Frage, die dieses Plugin nicht beantwortet.
Ich betreibe schon Complianz / Cookiebot / Borlabs. Kommen sie sich in die Quere?
Nein. Standardmäßig ignoriert Calucon Third-Party Embed Gate das Banner und sperrt weiter, und nichts wird doppelt blockiert – im Platzhalter steckt kein Iframe und kein Skript, das der Blocker eines Banners abfangen könnte. Wer lieber eine Entscheidung statt zwei hätte, schaltet die Brücke zur Consent-Plattform ein: eine dort erteilte Einwilligung lädt die Einbettungen dann automatisch.
Zählt loading="lazy" als Einwilligung?
Nein. Lazy Loading verschiebt die Anfrage auf den Moment des Scrollens; gestellt wird sie trotzdem ohne Einwilligung. Lazy-Iframes werden gesperrt wie alle anderen.
Ich nutze ein Caching- oder Minifizierungs-Plugin. Bricht das etwas?
Das Sperren nicht. Gesperrt wird auf dem Server, gespeichert wird also die bereits gesperrte Seite, und minifiziertes HTML ist eingeplant und kein Problem – der Scanner ist dafür gebaut. Auch Deferring, Zusammenfassen oder spätes Nachladen des Plugin-Skripts funktionieren.
Eine Einstellung sollte man kennen: JavaScript bis zur Interaktion verzögern hält alle Skripte zurück, bis der Besucher die Seite zum ersten Mal berührt – und diese Interaktion wird dafür verbraucht, die Skripte einzuschalten. Sein erster Klick auf einen Laden-Button bewirkt dann nichts, und er muss ein zweites Mal klicken. Durch den zusätzlichen Klick wird kein Drittanbieter kontaktiert, aber der Platzhalter wirkt kaputt. Seit 1.0.0 nennt Status und Werkzeuge die drei Dateien für die Ausschlussliste des Optimierungs-Plugins – und wo dieses Plugin seine Ausschlussliste führt.
Werden die eigenen Dateien über einen CDN-Hostnamen ausgeliefert, gilt dieser als eigener: Die meisten CDN-Plugins filtern die WordPress-Funktionen, die angeben, wo die Dateien liegen. Ein CDN, das stattdessen die fertige Seite umschreibt, lässt sich so nicht erkennen. Deshalb bleiben Skripte und Stylesheets, deren Pfad /wp-content/ oder /wp-includes/ enthält, seit 1.0.0 unangetastet – gleich, welcher Host sie ausliefert; niemals Iframes und niemals Bilder.
Eine Einbettung aus meinem Page-Builder wird nicht gesperrt
Die HTML- und Video-Widgets von Elementor werden von Haus aus gesperrt – das Video-Widget baut seinen Player aus JSON, ganz ohne Iframe, und 1.0.0 sperrt es trotzdem. Andere Page-Builder rendern außerhalb der Inhaltsfilter von WordPress: unter Erkennung „Die gesamte Seitenausgabe sperren“ einschalten, dann liest das Plugin die fertige Seite. Das ist standardmäßig aus, weil die Pufferung der gesamten Seite mit anderen puffernden Plugins kollidieren kann.
Was es nicht ist
Calucon Third-Party Embed Gate ist keine Consent-Management-Plattform. Es erzeugt keine Einwilligungsnachweise für Rechenschaftszwecke, es untersucht die Seite nicht auf andere Tracker, und es trifft dazu keine rechtlichen Aussagen. Wer einen dokumentierten Nachweis nach Art. 7 Abs. 1 braucht, braucht eine CMP – und Calucon Third-Party Embed Gate kommt ihr dabei nicht in die Quere.
Support und Sicherheit
- Fehler und Wünsche: GitHub-Issues.
- Sicherheit: vertraulich melden über die private Schwachstellenmeldung von GitHub, nicht als öffentliches Issue. Jeder Weg, eine Seite vor dem Klick einen Dritten kontaktieren zu lassen, gilt als Sicherheitslücke.
- Die Arbeit unterstützen: Ko-fi. Völlig freiwillig – das Plugin steht unter der GPL und hat keine Bezahlversion.
Calucon Third-Party Embed Gate wird von Calucon entwickelt und gepflegt. Entstanden ist es beim Sperren der Einbettungen auf genau dieser Website – deshalb sind die Zahlen hier gemessen und nicht geschätzt.
