Die eine Regel
Vor dem Klick wird nichts von Dritten geladen. Kein Skript, kein Iframe, kein Vorschaubild, kein
preconnect.
Das ist das gesamte Produkt des Plugins. Eine Anpassung, die das bricht, hat das Plugin nicht angepasst, sondern entfernt. Konkret, im eigenen Code:
- Kein Posterbild und kein Favicon vom Anbieter holen Posterbilder müssen von der eigenen Seite kommen. Der vorgesehene Weg ist Posterbild festlegen im Block-Inspector – der Server weist jede Poster-URL zurück, die nicht auf den eigenen Host auflöst. Seit 1.0.0 zählt das Upload-Verzeichnis dazu, eine auf ein CDN ausgelagerte Mediathek braucht daher meist keinen Eintrag: die meisten CDN-Plugins filtern die WordPress-Funktionen, die angeben, wo die eigenen Dateien liegen, und von dort wird der ausgelagerte Host gelesen. Tut das eigene CDN das nicht, gehört es unter Erkennung → Weitere eigene Hosts – ein CDN, das die fertige Seite umschreibt, erreicht diese Funktionen nie.
- Kein
autoplayhinzufügen Undallowodersandboxnicht weiter fassen als in der ursprünglichen Einbettung. Autoplay verstößt gegen WCAG 1.4.2 und ist nicht das, worum der Besucher gebeten hat. - Vor dem Klick nichts in Cookies oder
localStorageschreiben Auch nicht, um sich etwas zu merken. Speicherzugriff vor der Einwilligung ist genau das Problem, das dieses Plugin beseitigen soll. - Keine rechtlichen Zusicherungen in eigene Texte schreiben Das Plugin ist eine technische Maßnahme und trifft keine rechtlichen Aussagen – eigene Hinweistexte und Buttonbeschriftungen sollten das ebenso wenig tun.
- Kein wörtliches
<iframeausgeben Nicht im Platzhalter-Markup. Gesperrte Inhalte können erneut verarbeitet werden, und ein rohes Iframe würde dabei erneut erkannt. - Den serverseitig gerenderten Ersatzlink behalten Wer JavaScript abgeschaltet hat, muss trotzdem einen echten Link zum Inhalt bekommen.
Das Gate sperrt im Zweifel, und das ist das Sicherheitsnetz: die generische Regel fängt ein unbekanntes fremdes Iframe auch dann ab, wenn der eigene Descriptor falsch ist. Eine kaputte Anpassung zeigt einen generischen Platzhalter – sie lässt nie stillschweigend einen Tracker durch.
Einen Anbieter ergänzen
- Zuerst die Einstellungsseite Seit 0.10.0 nimmt der Tab Anbieter einen Hostnamen direkt entgegen: Einbettungs-Host eintragen (und gegebenenfalls den Skript-Host), eine Art wählen, damit der Button das passende Icon bekommt – und der Anbieter erhält dieselben Hinweis-, Button- und Datenschutzlink-Optionen wie ein eingebauter. Kein Code, und nichts, was brechen kann: unbekannte Hosts werden ohnehin gesperrt, ein Host, den bereits ein eingebauter Anbieter abdeckt, wird mit einem Hinweis abgelehnt, und eigene Anbieter werden immer gesperrt.
- Zum Descriptor erst, wenn es sein muss Zu Code greift man erst, wenn etwas gebraucht wird, das die Einstellungsseite nicht ausdrücken kann: ein Pfadmuster, ein datensparsameres Ladeziel, Query-Parameter, die beim Laden ergänzt werden, oder eine Ersatz-URL, die aus der ID der Einbettung gebaut wird. Anbieter sind Descriptor-Arrays, keine Klassen – zehn Zeilen in
functions.phpergeben einen vollständigen.
Die Descriptor-Schlüssel, ihre Vorgabewerte und ein ausgearbeitetes Beispiel stehen in der API-Referenz (englisch).
Jede Änderung prüfen
wp calucon-embed-gate scan --format=json # alle gefundenen Einbettungen, und ob sie gesperrt sind
wp calucon-embed-gate providers --format=json # Anbieter, so wie das Gate sie auflöstBeide ausführen. Sie lesen nur und stellen keine Anfrage nach außen, sind auf einer Live-Website also unbedenklich.
In jeder fremden Zeile muss
status: gatedstehen. Alles andere heißt „lädt ohne Einwilligung, weil eine Einstellung das so vorgibt“ – welcher Status was bedeutet, steht in der API-Referenz (englisch).Danach im Browser gegenprüfen. Das ist die Kontrolle, die die Behauptung tatsächlich belegt: Entwicklerwerkzeuge → Netzwerk → die eigene Domain herausfiltern → neu laden. Vor jedem Klick muss die Liste leer sein.
Wo man nachschlägt
- 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, die CSS-Custom-Properties und die JavaScript-Schnittstelle im Frontend.
- Überblick Was das Plugin tut und warum.
- Live-Demo Alle Anbieter auf einer Seite, und nichts lädt, bevor ein Button gedrückt wird.
- Quellcode auf GitHub Issues und vertrauliche Sicherheitsmeldungen. Jeder Weg, eine Seite vor dem Klick einen Dritten kontaktieren zu lassen, gilt als Sicherheitslücke.
- WordPress.org Installation, Changelog, Support-Forum.
docs/customizing.mdIm Plugin enthalten – dasselbe Material wie hier, und seit 1.0.0 ein Abschnitt zu Caching-, Minifizierungs- und CDN-Plugins, den diese Seite nicht wiederholt: eine Tabelle Symptom → Ursache → Lösung, und wo das jeweilige Optimierungs-Plugin seine Ausschlussliste führt.
