DataFirefly Cookie Consent: kompletny przewodnik
Instalacja, konfiguracja banera, Google Consent Mode v2, audyt trackerów i dziennik CNIL/Garante we wtyczce WordPressa DataFirefly Cookie Consent.
Prezentacja
DataFirefly Cookie Consent to wtyczka WordPressa i WooCommerce do zarządzania zgodą na pliki cookie. Łączy trzy elementy: baner zgody zgodny z RODO oraz wytycznymi CNIL i Garante, natywne emitowanie sygnałów Google Consent Mode v2 przed jakimkolwiek tagiem Google oraz audyt wykrywający trackery faktycznie ładowane na Twojej witrynie, z eksportowalnym dziennikiem dowodowym.
Wymagania
- WordPress 6.2 lub nowszy
- PHP 8.0 lub nowszy
- WooCommerce 8.0+ (opcjonalnie, wtyczka działa też na samym WordPressie, zgodność z HPOS zadeklarowana)
- Zainstalowany już GTM albo GA4, jeśli chcesz korzystać z Consent Mode v2 (wtyczka nie instaluje tagów Google za Ciebie)
Instalacja
- Pobierz plik
df-cookie-consent.zipze swojego konta DataFirefly. - W administracji WordPressa przejdź do Wtyczki → Dodaj nową → Wyślij wtyczkę na serwer, wybierz ZIP i kliknij Zainstaluj teraz.
- Kliknij Włącz. Przy aktywacji wtyczka tworzy tabelę dziennika
wp_dfcc_consent_log, generuje losowy salt do hashowania adresów IP i planuje dwa zadania cron (dobowe czyszczenie dziennika i skan trackerów). - W pasku bocznym administracji pojawia się nowe menu Cookie Consent z czterema stronami: Panel, Ustawienia, Audyt i Dziennik.
Baner wyświetla się na froncie natychmiast, z ustawieniami domyślnymi (układ paska u dołu strony, jasny motyw, tryb opt-in, wszystkie 4 kategorie włączone).
Konfiguracja banera
Wszystkie ustawienia znajdują się w Cookie Consent → Ustawienia.
Zachowanie ogólne
- Włącz baner: globalny przełącznik wtyczki.
- Tryb: opt-in (obowiązkowy w UE, żadnych plików cookie innych niż niezbędne przed zgodą) albo opt-out.
- Przycisk Odrzuć wszystko na pierwszym poziomie: włączony domyślnie, zgodnie z rekomendacją CNIL z 17 września 2020. Nie wyłączaj go, jeśli Twoja publiczność jest europejska.
- Czas życia ciasteczka zgody: domyślnie 180 dni. Wybór użytkownika przechowywany jest w ciasteczku
dfcc_consent(zakodowanym, first-party). - Wersja polityki: zwiększaj ten numer, gdy Twoja polityka cookies zmienia się istotnie: baner zostanie automatycznie ponownie pokazany wszystkim odwiedzającym, a dziennik zapisze nową wersję.
Wygląd
- Układ: pasek na pełną szerokość, karta w rogu albo wyśrodkowany modal.
- Pozycja: góra albo dół strony (dla układów paska i karty).
- Motyw: jasny, ciemny albo automatyczny (podąża za preferencją systemową odwiedzającego przez prefers-color-scheme).
- Kolor akcentu: personalizuje kolor głównego przycisku.
Na urządzeniach mobilnych (poniżej 640 px) baner automatycznie przechodzi na pełny ekran, aby pozostać czytelnym. Animacje respektują prefers-reduced-motion.
Kategorie plików cookie
Wstępnie skonfigurowane są cztery kategorie, każda z edytowalną etykietą i opisem:
- Niezbędne (necessary): zawsze aktywne, niewyłączalne przez odwiedzającego: koszyk, sesja, bezpieczeństwo.
- Funkcjonalne (functional): preferencje, język, czat.
- Pomiar ruchu (analytics): Google Analytics, Matomo i inne.
- Reklama spersonalizowana (marketing): Google Ads, Meta Pixel, remarketing.
Teksty i linki
Tytuł banera, tekst wprowadzający i etykiety czterech przycisków (Zaakceptuj wszystko, Odrzuć wszystko, Dostosuj, Zapisz moje wybory) są edytowalne w ustawieniach. Uzupełnij też adresy swojej polityki prywatności i polityki cookies: wyświetlają się jako dyskretne linki pod przyciskami. Wszystkie teksty przechodzą przez funkcje tłumaczeń WordPressa: wtyczka dostarczana jest z 5 katalogami (FR, EN, ES, DE, IT) i pozostaje nadpisywalna przez Loco Translate.
Google Consent Mode v2
To techniczne serce wtyczki. Od marca 2024 Google wymaga, aby witryny europejskie emitowały 7 sygnałów Consent Mode v2, żeby dalej mierzyć konwersje Google Ads i budować grupy odbiorców w GA4.
Działanie
Wtyczka drukuje blok gtag('consent', 'default', ...) w sekcji head HTML z priorytetem 1 w wp_head, czyli przed jakimkolwiek kontenerem GTM albo tagiem GA4 ładowanym standardowo. Emitowane 7 sygnałów:
ad_storage,ad_user_data,ad_personalization: sterowane kategorią Reklama spersonalizowanaanalytics_storage: sterowany kategorią Pomiar ruchufunctionality_storage,personalization_storage: sterowane kategorią Funkcjonalnesecurity_storage: zawsze granted (rekomendacja Google)
Mapowanie kategorii na sygnały jest automatyczne: żadne ręczne ustawianie nie jest potrzebne. Gdy odwiedzający dokona wyboru, natychmiast emitowany jest gtag('consent', 'update', ...), a wybór jest ponownie stosowany jako stan domyślny na każdej kolejnej stronie.
Ustawienia Consent Mode
- Region EOG: domyślnie ścisłe deny stosuje się wyłącznie do 31 krajów EOG (plus Wielka Brytania i Szwajcaria) przez parametr region w gtag, reszta świata pozostaje w granted. Natywne wykrywanie Cloudflare przez nagłówek CF-IPCountry.
- url_passthrough: włączone domyślnie. Zachowuje identyfikatory kliknięć gclid i dclid w adresach URL nawet przy odmowie, co pozwala mierzyć konwersje bez plików cookie.
- ads_data_redaction: włączone domyślnie. Cenzuruje dane użytkownika wysyłane do Google, gdy ad_storage jest denied.
- wait_for_update: domyślnie 500 ms. Czas dany tagom Google na oczekiwanie na aktualizację zgody.
Sprawdzenie, czy wszystko działa
- Otwórz swoją witrynę w trybie prywatnym, otwórz konsolę przeglądarki i wpisz
dataLayer: musisz zobaczyć wpis consent default przed wpisem gtm.js. - W Google Tag Assistant albo w trybie Preview w GTM zakładka Consent musi pokazywać 7 sygnałów wraz z ich stanem.
- Zaakceptuj baner i wpisz ponownie
dataLayer: musi pojawić się wpis consent update z nowymi stanami.
Audyt zgodności
Strona Cookie Consent → Audyt uruchamia skan, który pobiera Twoją stronę główną i analizuje faktycznie serwowany HTML.
Co wykrywa skan
- 23 znane trackery: Google Analytics 4, GTM, Meta Pixel, TikTok, LinkedIn, Pinterest, Snapchat, Twitter/X, Bing UET, Matomo, Microsoft Clarity, Hotjar, Mixpanel, Plausible, HubSpot, Intercom, Crisp, Tawk, YouTube, Vimeo, Stripe i inne, każdy przypisany do oczekiwanej kategorii zgody.
- 11 ryzykownych wtyczek WordPressa: MonsterInsights, Site Kit, PixelYourSite, Facebook/Pinterest/TikTok for WooCommerce, HubSpot, MC4WP i inne wtyczki wstrzykujące trackery po swojej stronie.
- Pliki cookie ustawiane po stronie serwera: zrzut z automatyczną identyfikacją dostawcy (_ga, _fbp, _gcl i podobne).
Wynik i rekomendacje
Skan generuje wynik zgodności od 0 do 100, oparty na rozbieżności między zadeklarowanymi kategoriami a faktycznie wykrytymi trackerami. Problemy klasyfikowane są na trzech poziomach: critical, warning, info, każdy z możliwą do wdrożenia rekomendacją (na przykład: wykryty tracker marketingowy przy kategorii wyłączonej w banerze). Automatyczny skan działa też w tle przez cron dfcc_cron_scan_trackers.
Dziennik zgód
Strona Cookie Consent → Dziennik wypisuje każde zdarzenie zgody zapisane w dedykowanej tabeli wp_dfcc_consent_log.
Zapisywane dane
- Znacznik czasu UTC, trwały anonimowy UID (śledzenie wielu zdarzeń tego samego odwiedzającego)
- Typ zdarzenia: accept_all, reject_all, custom, withdraw
- Pełny stan per kategoria, wersja polityki i banera
- Podwójnie chroniony adres IP: hash SHA-256 z losowym saltem wygenerowanym przy aktywacji (nieodwracalny) plus IP skrócone do /24 (IPv4) albo /64 (IPv6) na potrzeby anonimowej analizy
- User agent, adres strony, referer, region, język, user_id WordPressa jeśli zalogowany
Filtry i eksport
Filtruj po okresie, typie zdarzenia albo UID, a następnie eksportuj do CSV (BOM UTF-8, separator średnika, otwiera się wprost we francuskim Excelu) albo do JSON pretty. Te eksporty stanowią Twój dowód zgody w razie kontroli CNIL albo Garante.
Retencja
Domyślnie dziennik przechowywany jest 1825 dni (5 lat, okres zalecany przez CNIL). Automatyczne czyszczenie działa każdej nocy przez cron dfcc_cron_purge_logs. Retencję można ustawić w ustawieniach. Uwaga: wyłączenie wtyczki zachowuje logi (dowód zgody); tylko pełna deinstalacja przez Wtyczki → Usuń czyści tabelę, opcje i crony.
Link „Zarządzaj plikami cookie” w stopce
Przepisy wymagają, aby odwiedzający mógł w każdej chwili zmienić swój wybór. Dwie opcje:
- Shortcode: umieść
Gérer mes cookiesw widżecie albo w menu stopki, generuje link ponownie otwierający modal personalizacji. - API JavaScript: wywołaj
window.dfcc.open()z dowolnego elementu swojego motywu.
API dla deweloperów
API JavaScript
Globalny obiekt window.dfcc udostępnia:
dfcc.open(): otwiera modal personalizacjidfcc.accept(): akceptuje wszystkie kategoriedfcc.reject(): odrzuca wszystkie kategorie opcjonalnedfcc.withdraw(): wycofuje zgodę (zdarzenie withdraw trafia do dziennika)dfcc.getConsent(): zwraca pełny stan zgodydfcc.hasConsent('analytics'): sprawdza daną kategorię (przydatne do warunkowania własnych skryptów)
Endpoint REST
Endpoint POST dostępny jest pod wp-json/dfcc/v1/consent i pozwala zapisać zdarzenie zgody z Twojego własnego kodu (chroniony przez nonce).
Hooki WordPressa
dfcc_before_banner_render: akcja wyzwalana przed renderowaniem banera (na przykład do ukrycia go na wybranych stronach)dfcc_after_consent_logged: akcja wyzwalana po każdym zapisie do dziennika (na przykład do synchronizacji z CRM)dfcc_consent_mode_defaults: filtr na stany domyślne 7 sygnałów Consent Modedfcc_scan_trackers_patterns: filtr do dodania własnych wzorców wykrywania do skanera
Rozwiązywanie problemów
- Sygnały Consent Mode nie pojawiają się przed GTM: sprawdź, czy żadna wtyczka wydajnościowa nie przenosi ani nie odracza skryptów z sekcji head. Blok dfcc-consent-mode-default musi pozostać inline i nieodroczony.
- Baner pojawia się przy każdej wizycie: sprawdź, czy system cache nie serwuje zamrożonej strony ze starym ciasteczkiem oraz czy czas życia ciasteczka nie wynosi 0.
- Skan audytu się nie udaje: serwer musi móc wykonać żądanie HTTP do własnej strony głównej. Na niektórych hostingach z zablokowanym loopbackiem zezwól na żądania lokalne albo sprawdź zaporę.
- Zapisane adresy IP to adresy Cloudflare: wtyczka czyta w pierwszej kolejności CF-Connecting-IP; jeśli problem się utrzymuje, sprawdź, czy konfiguracja serwera prawidłowo przekazuje nagłówki Cloudflare.