This commit is contained in:
2026-05-19 23:44:20 +02:00
parent b0a80b30eb
commit 26a754ccd5
63 changed files with 791 additions and 12382 deletions

View File

@@ -1,135 +0,0 @@
---
phase: 01-rodo-cookie-consent
plan: 01
subsystem: tracking
tags: [gdpr, rodo, facebook-pixel, google-consent-mode, pixelyoursite, hfcm, wordpress]
requires: []
provides:
- 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)
affects: []
tech-stack:
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"
key-files:
created: []
modified:
- wp-content/themes/Divi/functions.php
key-decisions:
- "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"
patterns-established:
- "Odczyt cookie w WordPress: wp_unslash() + urldecode() + json_decode()"
duration: ~4h
started: 2026-04-26T20:00:00Z
completed: 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_gdpr``facebook_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*