Files
Jacek Pyziak 100689450b feat(01-rodo-cookie-consent): RODO compliance — Consent Mode v2 + Facebook Pixel blokada
Phase 1 complete:
- fbq noop na wp_head priority 1 — blokuje Facebook Pixel ze wszystkich źródeł (HFCM, PYS, woo-product-feed-pro) gdy brak zgody marketingowej
- Early gtag consent update PHP-side dla powracających użytkowników — eliminuje race condition z GTM
- Granularne filtry pys_disable_*_by_gdpr — PixelYourSite honoruje kategorie marketing/analytics
- Fix: wp_unslash() przy odczycie $_COOKIE (WP wp_magic_quotes addslashes)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 00:46:41 +02:00

5.5 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established duration started completed
01-rodo-cookie-consent 01 tracking
gdpr
rodo
facebook-pixel
google-consent-mode
pixelyoursite
hfcm
wordpress
Facebook Pixel zablokowany bez zgody marketingowej (fbq noop)
Google Consent Mode v2 early update dla powracających użytkowników
PixelYourSite granularne filtry GDPR (marketing/analytics)
added patterns
wp_unslash() przed json_decode($_COOKIE) w WordPress — wp_magic_quotes() stosuje addslashes na cookies
fbq noop pattern — window.fbq = function(){} na wp_head priority 1 blokuje wszystkie źródła pixela
created modified
wp-content/themes/Divi/functions.php
fbq noop zamiast remove_action — universalne, niezależne od źródła pixela
wp_unslash() wymagane przy odczycie $_COOKIE w WordPress 6.x
Divi/functions.php zamiast body-relax/functions.php — motyw aktywnie deploywany
Odczyt cookie w WordPress: wp_unslash() + urldecode() + json_decode()
~4h 2026-04-26T20:00:00Z 2026-04-27T00:45:00Z

Phase 1 Plan 01: Google Consent Mode v2 + Facebook Pixel GDPR — Summary

fbq noop + PYS filtry + early consent update wdrożone w Divi/functions.php; Facebook Pixel nie odpala bez zgody marketingowej, Consent Mode v2 działa poprawnie dla nowych i powracających użytkowników.

Performance

Metric Value
Duration ~4h
Started 2026-04-26
Completed 2026-04-27
Tasks 2 auto + 1 checkpoint
Files modified 1

Acceptance Criteria Results

Criterion Status Notes
AC-1: Powracający użytkownik — brak race condition Pass szkolenia_consent_early_update na wp_head priority 1, gtag update PRZED GTM
AC-2: Granularna blokada PixelYourSite Pass pys_disable_facebook_by_gdprfacebook_disabled_by_api: true w pysOptions
AC-3: Kategorie zgody honorowane Pass fbq noop gdy brak "marketing", PYS filtry per-kategoria
AC-4: Consent Mode v2 defaults nie naruszone Pass cookies.php w header.php linia 4 bez zmian

Accomplishments

  • Zablokowany Facebook Pixel we wszystkich 3 źródłach: HFCM (snippet w DB), PixelYourSite, woo-product-feed-pro
  • gtag('consent', 'update') emitowany server-side przed GTM dla powracających użytkowników (eliminacja race condition)
  • Odkryto i naprawiono: WordPress wp_magic_quotes() stosuje addslashes() na $_COOKIE — wymagane wp_unslash()

Files Created/Modified

File Change Purpose
wp-content/themes/Divi/functions.php Modified (dodano ~70 linii po 8883) RODO: fbq noop + consent update + PYS filtry + woosea blokada

Decisions Made

Decision Rationale Impact
fbq noop zamiast remove_action remove_action na HFCM statyczną metodę nie działał niezawodnie Universalna blokada niezależna od źródła pixela
Divi/functions.php (nie body-relax) Pliki są deployowane przez FTP — Divi jest aktywnym tematem deploywanych plików Kod działa na serwerze produkcyjnym
wp_unslash() przy odczycie cookies WP 6.x wp_magic_quotes() stosuje addslashes na $_COOKIE; json_decode na backslash-quoted JSON zwraca null Poprawny odczyt kategorii zgody

Deviations from Plan

Summary

Type Count Impact
Auto-fixed 3 Istotne — bez nich pixel nadal by odpalał
Scope additions 1 Niezbędne odkrycie (wp_unslash)
Deferred 0

Auto-fixed Issues

1. Zły plik docelowy

  • Found during: Task 1
  • Issue: Kod dodany do body-relax/functions.php zamiast Divi/functions.php
  • Fix: Przeniesienie kodu do Divi/functions.php
  • Verification: Kod działa na serwerze

2. Dodatkowe źródło fbq — woo-product-feed-pro

  • Found during: Checkpoint verify
  • Issue: Plugin AdTribes ma własny pixel hooked do wp_footer bez consent check
  • Fix: Dodano szkolenia_block_woosea_facebook_pixel na wp_footer priority 1
  • Verification: remove_action działa prawidłowo dla tej funkcji

3. Główne źródło fbq — HFCM (nie PYS)

  • Found during: Debugowanie
  • Issue: Pixel w snippecie HFCM (DB) ignorował remove_action; WordPress addslashes na cookies łamał json_decode
  • Fix: fbq noop na wp_head priority 1 + wp_unslash() w szkolenia_cnp_has_preference
  • Verification: Playwright — fbqIsRealOrNoop=NOOP bez cookies, REAL z pełną zgodą

Issues Encountered

Issue Resolution
PYS cookie_notice_integration_enabled: false — brak integracji z Cookie Notice Pro (niestandardowy plugin) PHP filtry pys_disable_*_by_gdpr zamiast natywnej integracji
WordPress wp_magic_quotes()addslashes() na $_COOKIE wp_unslash() przed json_decode()
HFCM remove_action nieskuteczny dla statycznej metody podczas wp_head fbq noop — definicja window.fbq = function(){} przed wszystkimi skryptami

Next Phase Readiness

Ready:

  • RODO compliance dla Facebook Pixel, GA, Bing Ads — wdrożone
  • Consent Mode v2 defaults + early update działają
  • Wzorzec odczytu cookies z wp_unslash() udokumentowany

Concerns:

  • GTM container (tagi/triggery consent-aware) — nie skonfigurowane, poza scope planu
  • Testy na realnym urządzeniu z prawdziwym kliknięciem banera — niezrobione (plan zakłada checkpoint human-verify)

Blockers:

  • Brak

Phase: 01-rodo-cookie-consent, Plan: 01 Completed: 2026-04-27