Einen adäquaten Cookie-Dialog einzublenden ist das eine. Ihm eine echte Bedeutung zu geben, das andere. Denn die Abfrage allein reicht nicht. Wir müssen die Antworten unserer Leserinnen auch auswerten. Wir dürfen ausschließlich solche Cookies auf deren Rechnern ablegen, die zu schreiben sie oder das Gesetz uns erlaubt haben. Ein JavaScript-Funktion, die das gewährleistet, implementiert die Semantik des Cookie-Dialogs und etabliert ein sauberes Cookie-Management.
Das Plugin bs-Cookie-Settings selbst liefert nur die Cookie-Abfrage. Wie man die aktiviert, hatte ich bereits beschrieben. Die entsprechende Semantik zu implementieren, sieht bootScore als Aufgabe der jeweiligen Web-Designerin. Hier eine Variante, die gern allgemein wiederverwendet werden darf:
Lösung
- Lade die JS-Cookie-Bibliothek von z.B. cdnpkg.com herunter und lege sie (entpackt) unter dem Namen
js/js.cookie.min.js
in Deinem Child-Theme-Ordner ab. - Erweitere in Deiner Datei
functions.php
die Funktionbootscore_child_enqueue_styles()
um den Eintrag
wp_enqueue_script('js-cookie',get_stylesheet_directory_uri().'/js/js-cookie-min.js',false, '', true););
- Erweitere die Datei
js/custom.js
Deines Child-Themes so:
jQuery(function ($) {
$(document).ready(function(){
const bsCookieSettings='bs_cookie_settings';
const analytics = 'analytics';
const advertising = 'advertising';
const analyticDemoCookie='bsAnalyticCookie';
const advertisingDemoCookie='bsAdvertisingCookie';
const necessaryDemoCookie='bsNecessaryCookie';
const demoCookieValue='demo-cookie';
// alert("adding cookie writing algorithm");
const bsv=Cookies.get(bsCookieSettings);
if (bsv) {
const allowedCookies=JSON.parse(bsv);
// alert(allowedCookies.level);
if (allowedCookies.level.includes(analytics)) {
// alert("writing analytic cookies");
if (!(Cookies.get(analyticDemoCookie))) {
Cookies.set(analyticDemoCookie, demoCookieValue, { expires: 100, path: '/' });
};
};
if (allowedCookies.level.includes(advertising)) {
// alert("writing advertising cookies");
if (!(Cookies.get(advertisingDemoCookie))) {
Cookies.set(advertisingDemoCookie, demoCookieValue, { expires: 10, path: '/' });
};
};
// alert("writing necessary cookies");
if (!(Cookies.get(necessaryDemoCookie))) {
Cookies.set(necessaryDemoCookie, demoCookieValue, { expires: 14, path: '/' });
};
};
});
// Do your other stuff here
}); // jQuery End
Hintergrund
Cookies könnten wir mit nativem Javascript setzen und evaluieren. Mit fertigen Bibliotheken geht es einfacher. WordPress bringt jQuery bereits mit. Und bootScore hat dies schon aktiviert und uns eine Möglichkeit geschaffen, eigene JavaScript-/JQuery-Funktionen in unser bootScore-Childtheme einzubauen.
Früher gab es für das Cookie-Management ein echtes jQuery-cookie Plugin. Das ist mittlerweile archiviert und in eine von jQuery unabhängige Javascript-Bibliothek js-cookie überführt worden. Um die zu nutzen, laden wir Datei js-cookie-min.js herunter und legen sie im JavaScript-Ordner unseres Child-Themes ab. Außerdem erweitern wir die Funktion bootscore_child_enqueue_styles()
in unser Datei functions.php
so, dass die Bibliothek js/js.cookie.min.js
auch geladen wird.
Den Algorithmus zur Evaluation der Cookie-Settings implementieren wir danach in der Datei js/custom.js
. Er wirkt so:
- Zuerst versuchen wir den vom bs-Cookie-Plugin unter dem Namen
bs_cookie_settings
abgelegten Cookie zu lesen. - Wenn es ihn noch nicht gibt, hat unsere Leserin der Nutzung von Cookies noch nicht zugestimmt. Also dürfen wir noch keine schreiben.((Übrigens auch die technisch notwendigen nicht. Die dürfen wir zwar von gesetzeswegen ablegen, wir müssen unsere Leserin aber zuvor informieren, dass wir das tun. Und dass wir das getan haben, können wir wiederum anhand des Cookies
bs_cookie_settings
‘belegen’. )) - Sobald unsere Leserin den Cookie-Dialog in welchem Umfang auch immer ‘bestätigt’ hat, legt das bs-Cookie-Plugin den Cookie
bs_cookie_settings
ab. Sein Wert enthält ein JSON-Objekt:
{ "level":
[ "necessary",
"analytics",
"advertising"
],
"revision":0,
"data":null,
"rfc_cookie":false
}
- Das müssen wir also erst parsen lassen, bevor wir — auf JavaScript-Ebene — auf die Liste der erlaubten Cookie-Gruppen via
allowedCookies.level
zugreifen und über die Methodeincludes
eines Listenobjektes abfragen können, welche der Cookie-Gruppen necessary, analytics und /oder advertising uns unsere Leserin zu schreiben erlaubt hat. - Und zu jeder zugelassen Gruppen schreiben wir dann die entsprechenden Cookies.((wobei wir uns bei den technisch notwendigen Cookies auf die gesetzliche Erlaubnis berufen.))
Und ein letzter Tipp noch: JavaScript erzeugt Seiten dynamisch. Gecacht werden die Ergebnisse. Deshalb müssen wir gelengtlich den Cache löschen, um die Ergebnisse unserer Veränderungen sehen zu können.
Und in welchem Zusammenhang …
… steht das mit unserer Migration zu bootScore? Nun, zuletzt muss die Web-Designerin im Rahmen ihrer Anpassungen auch rechtliche Vorgaben beachten, seien es die der DSGVO, die für eine Cookie-Zustimmung und deren Beachtung oder die zur Erstellungen einer Datenschutzerklärung. In diesen Kontext gehören dann auch die Fragen nach dem Zweck eines Bildverzeichnisses, nach einem adäquaten Impressum oder nach einer hinreichenden Open-Source-Lizenzerfüllung. Dies ins rechte Licht zu rücken, will auch dieser Post unterstützen.
Im Übrigen: Männer sind mitgemeint.