Zarządzanie ciastkami w wordpressie za darmo, bez ograniczeń, zgodnie z prawem i Google Consent Mode (GCM) v2
Minęło już całkiem sporo czasu, odkąd UE wymusiła na właścicielach witryn informowanie użytkowników o ciastkach wykorzystywanych na witrynie, z czasem przekształciło się to w wymóg możliwości zarządzania nimi, a od zeszłego roku doszedł do tego nowy, dość problematyczny niuans od samego Google’a, czyli tzw. Google Consent Mode (GCM).
Narzędzi do wdrażania zastosowań „ciastkowych” w WordPressie znajdziemy wiele – aczkolwiek niestety znakomita większość jest obarczona różnymi ograniczeniami, łączy się z zewnętrznymi serwisami (zliczanie wyświetleń, logowanie zgód itd.), obciąża witrynę w zauważalny sposób, czy po prostu na sam koniec integrację z GCM oferuje jako opcję płatną.
Nie jestem fanem płacenia abonamentów za podstawowe funkcje, które tak właściwie zostały wymuszone na właścicielach, a twórcy wtyczek obrócili to w złoty biznes.
Tak więc nie przedłużając, z poniższego poradnika dowiecie się jak w WordPressie zaimplementować menadżera zarządzania ciastkami za darmo, bez ograniczeń, w pełni zgodnie z prawem oraz kompatybilnością z GCMv2.
(Jeśli szukacie czegoś wymagającego mniej ręcznego konfigurowania, to możecie spróbować wtyczki „Cookies and Content Security Policy” – jest w pełni darmowa i zgodna z GCM v2, aczkolwiek zaznaczam, że jednocześnie nieco bardziej ograniczona w kilku miejscach, plus zgody w razie potrzeby trzeba eksportować ręcznie z bazy danych, klasyczny przypadek „coś za coś”).
Czego będziemy potrzebowali?
Wtyczki Pressidium Cookie Consent, dowolnej przeglądarki i trochę wolnego czasu.
Właściwa implementacja – instrukcja
Zaczynamy od utworzenia listy ciastek naszej witryny.
Krok nr 1 – Utworzenie listy ciastek
Sposoby mamy tak naprawdę dwa – „manualny” i „automatyczny”,
jednakże przed przystąpieniem do czynności zapisu listy ciastek upewnijmy się, że:
- Wyłączyliśmy wszystkie inne wtyczki od zarządzania ciastkami – mogą one blokować nam dostęp do niektórych pozycji.
- Wyłączyliśmy inne wtyczki/moduły/skrypty, które mogą ingerować w wyświetlanie aktywnej listy ciastek.
Dodatkowo w przypadku sposobu manualnego:
- Wyłączyliśmy adblocka/ublocka lub jakiekolwiek inne rozszerzenie mogące ingerować w ciastka
– bywa, że niektóre moduły/filtry mogą „ukryć” przed nami część pozycji. - Uruchamiamy przeglądarkę z okna incognito – w ten sposób mamy pewność, że pamięć podręczna nie miesza nam przy zapisie.
Automatyczny sposób na wylistowanie ciastek
* Zaznaczam z miejsca, że nie ma uniwersalnego, w 100% efektywnego skanera – taki po prostu nie istnieje, nawet jeśli ktoś się upiera, że jego właśnie taki jest.
Osobiście najczęściej używałem skanera CookieYes – ten zdawał się mieć względnie niezłą wykrywalność i przedstawia listę ciastek w prostej do przepisania formie.
Do skanera wklejamy wszystkie URL-e, które mogą być zaopatrzone w jakieś ciastka (czyli strona główna, podstrony z ew. elementami typu filmik youtube, iframe, czy nawet udostępnianie wpisów linkedin) – skaner nie działa „w głąb”, tak więc musimy mieć jakieś pojęcie gdzie te ciastka u nas na www mogą być.
Przykładowy skan na witrynie developer.mozilla.org (kliknij na zdjęcie, aby powiększyć):

– jak widać, skaner rozpoznał wszystkie uniwersalne ciastka analyticsa (rozszerzenia _g) – ale węwnętrznych ciastek już nie opisał w żaden sposób.
Jeśli dla naszej witryny pojawi się jakieś ciastko, którego nie potrafimy zidentyfikować – często wystarczy wpisać jego nazwę po prostu w wyszukiwarkę, w celu znalezienia informacji o jego przeznaczeniu.
Na podstawie takiej listy przygotowujemy gotowy zapis ciastek dla naszej witryny – tutaj w zasadzie musimy przygotować na własną rękę tylko tłumaczenia (albo pobrać gotowe opisy z sieci, na podstawie nazw).
Manualny sposób na wylistowanie ciastek
Do niego potrzebna będzie tylko i wyłącznie przeglądarka – pamiętajmy, aby uruchomić podstrony w oknie incognito oraz upewnijmy się, że nie mamy włączone żadnych wtyczek, które mogą ingerować w zarządzanie ciastkami (czyli np. mogłyby ich nie wyświetlić na czas listowania). Ważnym jest też, aby nie być zalogowanym, jeśli nasza witryna nie opiera się na systemie społeczności lub rejestracji, w celu pobierania treści (WordPress posiada kilka dodatkowych ciastek dla zalogowanych użytkowników – te zupełnie nie dotyczą niezalogowanych gości).
Będąc na poszczególnych oknach przeglądarki:
- wciskamy na klawiaturze F12 (zarówno Chrome, jak i Firefox);
- w przypadku Chrome przechodzimy do zakladki „Application”, następnie z lewej strony szukamy „Cookies” i tutaj wylistowane będą wszystkie domeny z ciastkami dla poszczególnych stron. Natomiast jeśli używamy Firefoxa, to przechodzimy do zakładki „Dane”, następnie szukamy z lewej strony „Ciasteczka” i na podobnej zasadzie wylistują się nam ciastka;
- interesują nas tylko dwie wartości – „Nazwa” oraz kolumna „Wygasa / Max Age” (Firefox) lub „Expires / Max Age” (Chrome);
- po nazwie ciastek wyszukujemy w sieci przeznaczenie poszczególnych ciastek i tworzymy dla nich opisy.
Na poniższym przykładzie zakładka z ciastkami dla mojej witryny (kliknij na zdjęcie, aby powiększyć):

Okazjonalnie może zdarzyć się tak, że trafimy na ciastka z kompletnie losowym ciągiem znaków – nierzadko tworzą je różne wtyczki z wielu różnych powodów; np. WP Cerber tworzy od 2 do 6 takowych – i w tym konkretnym przypadku mamy możliwość przypisania prefiksu, aby później móc je prawidłowo wylistować; może się zdarzyć, że możliwości takiej manipulacji generowanymi ciastkami nie ma i w tym wypadku należy sprawdzić dokumentację danej wtyczki lub skontaktować się z jej autorem, w celu prawidłowej identyfikacji.
Krok nr 2 – Instalujemy wtyczkę Pressidium Cookie Consent
Ten krok raczej nie wymaga dodatkowego komentarza. Wtyczkę instalujemy z oficjalnego repozytorium WordPressa lub jeśli z jakiegoś powodu nie mamy takiej możliwości, to wtyczka dostępna jest również na Githubie.
Krok nr 3 – Włączamy wtyczkę i przechodzimy do konfiguracji
Zakładka General
- Autorun ustawiamy na włączone – chcemy, aby opcje zgody pojawiły się jak najszybciej;
- Force consent – tutaj tak naprawdę ustawiamy wedle własnego uznania – albo wymuszamy zgodę/odmowę i dopóki użytkownik jej nie udzieli, to nie będzie miał możliwości przeglądania witryny albo zostawiamy jako opcjonalne; opcję proponuję pozostawić jako wyłączoną;
- Auto-clear cookies – jest to opcja pozwalająca w pełni zarządzać ciastkami wtyczce, tak więc ustawiamy opcję jako włączoną;
- Page scripts – zarządzanie skryptami stron; będzie to potrzebne, tak więc ustawiamy jako włączone;
- Hide from bots – ukrywanie przed botami, zostawiamy włączone;
- Re-consent – wymusza ponowne wyświetlenie banera ze zgodami w momencie, gdy zmieni się lista ciastek na naszej witrynie, zostawiamy opcję włączoną
- Record consents – zapisywanie zgód zgodnie z zasadą pseudonimizacji (w tym wypadku usuwanie dwóch ostatnich numerów adresu IP); jesteśmy prawnie zobligowani do okazywania zgód użytkowników w razie kontroli, tak więc opcja musi pozostać włączona;
- Hide empty categories – opcja czysto estetyczna – ukrywa puste kategorie w banerze, jeśli nie zawierają żadnych ciastek, proponuję włączyć;
- Delay – Opóźnienie dla banera, jeśli z jakiegoś powodu potrzebujemy go opóźnić. Domyślnie nie ma potrzeby modyfikowania tej wartości;
- Cookie expiration – data wygaśnięcia ciastka od zgód; ustawiamy na dowolną wartość i pamiętajmy, że należy dopisać później ciastko pressidium_cookie_consent do listy wymaganych z tą wartością, jako czasem wygaśnięcia;
- Cookie path – Ścieżka dla ciastka, domyślnie nie ma potrzeby modyfikowania tej wartości;
- Cookie domain – domena ciastka, pozostawiamy wartość domyślną (będzie to najpewniej adres witryny);
- Fonts & colors – tutaj edytujemy wedle uznania, to po prostu kolorystyka i styl banera ze zgodami.
Zakładka Cookies
Tutaj dodajemy zapisane wcześniej ciastka – nazwę, domenę ciastka (jeśli jest inna, niż domyślna ustawiona w zakładce General), czas wygaśnięcia, opcjonalnie ścieżkę i opis. Opcję „Is Regex?” pozostawiamy zawsze wyłączoną, skryptami będziemy zarządzać gdzie indziej.
Jak kategoryzować ciastka?
- Necessary cookies – są to niezbędne ciasteczka, do których używania nie potrzebujemy zgody użytkownika i są one niezbędne do działania witryny; będzie to np. ciastko od wyboru języka, od zgód na zapisywanie ciastek, wtyczki zabezpieczeń itp.;
- Analytics cookies – jak nazwa wskazuje, analityka, czyli np. Google Analytics, Matomo lub inny system o podobnym zastosowaniu;
- Targeting cookies – ciastka śledzące zachowania użytkowników i używane do profilowania np. reklam wyświetlanych użytkownikowi;
- Preferences cookies – ciastka opcjonalnych ustawień użytkownika.
Zakładka Translations
Po prostu tłumaczenia. Ustawienie Language auto-detection strategy proponuję ustawić na „document” – w takim wypadku będzie to wykrywanie języka na podstawie definicji w nagłówku witryny – takie definicje tworzą np. wtyczki do tłumaczeń na witrynie i tym samym będziemy mogli wyświetlać wyrażenia na podstawie języka witryny wybranego przez użytkownika. Jeśli nasza witryna operuje na jednym, domyślnym języku, to nie ma większego znaczenia jaką opcję tu ustawimy.
Poniżej znajdziemy opcję tłumaczenia – w chwili pisania artykułu niestety polski język trzeba dodać na własną rękę (lub wygenerować przy pomocy API tłumacza AI) i wypełnić wszystkie tłumaczenia od ręki. Plus jest taki, że takie tłumaczenia możemy później wyeksportować i używać na dowolnej liczbie innych witryn.
Zakładka Modals
Opcje czysto stylistyczne, ustawiamy wedle uznania lub zostawiamy konfigurację domyślną.
Zakładka Floating button
Prawo nas zobowiązuje do tego, aby umożliwić użytkownikowi w każdej chwili zmianę zgody, tak więc rozwiązaniem będzie tutaj umożliwić zmianę zgody poprzez kliknięcie pływającego przycisku – tak więc pierwsza opcja koniecznie włączona, stylizacja wedle uznania.
Zakładka Consent mode
- Google Consent Mode v2 (GCM) – Google wstępnie ogłosiło, że dane statystyczne nie będą przesyłane bez prawidłowo zaimplementowanego systemu wspierającego GCM, tak więc opcję oczywiście włączamy;
- Implementation – domyślnie implementacja zazwyczaj odbywa się za pomocą taga gtag.js (Analytics/GTM), aczkolwiek jest też opcja zarządzania poprzez szablon GTM – w takim wypadku należy przejść przez całą instrukcję, która pojawi się w momencie wybrania opcji;
- Ads data redaction – zarządzanie zgodami GCM, opcję włączamy;
- URL passthrough – przepuszczanie adresu URL – więcej dowiedzieć się można tutaj, domyślnie nie ma potrzeby zmiany tej opcji;
- Regiony – są to regiony, przy których zgodę GCM można ustawić inną, niż domyślną (odrzucenie). Domyślnie nie ma potrzeby zmiany.
Zakładka Blocked Scripts
Zarządzanie skryptami, tak więc bardzo istotna część konfiguracji. Tutaj ustawiamy formułki typu regex lub bezpośrednie ścieżki do skryptu.
Poniżej zamieszczam formułki dla najpopularniejszych serwisów:
^(?:https?:)?\/\/(?:www\.)?google-analytics\.com
^(?:https?:)?\/\/(?:www\.)?connect\.facebook\.net
^(?:https?:)?\/\/(?:www\.)?licdn\.com
^(?:https?:)?\/\/(?:www\.)?linkedin\.com
^(?:https?:)?\/\/(?:www\.)?doubleclick\.net
^(?:https?:)?\/\/(?:www\.)?googleadservices\.com
^(?:https?:)?\/\/(?:www\.)?youtube\.com
^(?:https?:)?\/\/(?:www\.)?google\.[\w.]+(?:\/|$)
Legenda formułek:
- google-analytics.com -> Analytics, Google Tag Manager oraz Google Ads;
- connect.facebook.net -> Facebook;
- licdn.com -> Linkedin, embedy;
- linkedin.com -> Linkedin;
- doubleclick.net, googleadservices.com, youtube.com, google.* -> Google Ads.
Kopiujemy oczywiście tylko regułki serwisów, których faktycznie używamy do zarządzania ciastkami na www.
„Cookie category” – jest po prostu kategorią, ważnym jest aby ustawić prawidłową z ustawień na zakładce „Cookies”.
W przypadku powyższych regułek regex zaznaczamy opcję Is Regex? na włączoną, natomiast w przypadku skryptów bezpośrednich (ścieżki URL do skryptów) zostawiamy opcję wyłączoną.
Krok nr 4 – Zapisujemy konfigurację i weryfikujemy działanie zarządzania ciastkami
Kolejno:
- Otwieramy wybraną podstronę z okna incognito, następnie wciskamy F12.
- W przypadku Chrome przechodzimy do zakladki „Application”, następnie z lewej strony szukamy „Cookies” (we Firefoxie przechodzimy do zakładki „Dane”) – na liście powinny pojawić się tylko i wyłącznie ciastka dodane do kategorii „niezbędnych” (Necessary cookies), natomiast wszystkie inne dopiero w momencie wyrażenia zgody (i możliwe, że odświeżenia zakładki – F5).
- Weryfikacja GCM jest troszeczkę bardziej skomplikowana – sposobów jest „naście”, aczkolwiek ja preferuję ten, który oferuje sama przeglądarka – przechodzimy do narzędzia developerskiego przeglądarki (F12), następnie w zakładce „konsola” na samym dole wpisujemy dataLayer i klikamy Enter. Pojawią się potencjalnie… mało czytelne kody, aczkolwiek nas interesuje tylko wiersz znajdujący się pod liczbą 0 – i obok niego klikamy na strzałkę, następnie przy rozwiniętej liście klikamy na strzałkę obok liczby 2, powinno się pojawić coś na podobę poniższego:
wartości „denied” są domyślnymi i takie właśnie powinny być w tym miejscu, po wyrażeniu zgody odświeżamy podstronę, ponownie wpisujemy frazę z punktu nr 3, następnie tym razem interesuje nas numerek 2 ze wpisem ’consent’,’update’ -> i tutaj po rozwinięciu powinny pojawić się wartości „granted”:
Voila, gotowe.
Zgody będą zapisywane na bieżąco i podgląd listy jest dostępny z poziomu panelu administracyjnego (tylko dla administratorów, rzecz jasna) w zakładce „Consent records”. Stąd możemy je nawet wyeksportować do arkusza CSV, w razie audytu lub na potrzeby archiwizacji.
