# Sütisáv és hozzájárulás a méréshez

> A látogatók hozzájárulásának kérése a mérés előtt: a sütisáv beállításai, a kategóriák, a Google Consent Mode, a gyorsítótár és a fejlesztői szűrők.

A SEOPress sütisávval kérhet hozzájárulást a látogatóktól, mielőtt a SEOPressben beállított mérőkódok elindulnak. A sáv elfogadást, elutasítást, kategóriánkénti választást és (ha akarod) a döntés későbbi módosítását kínálja.

## A sütisáv bekapcsolása

1. Nyisd meg: **SEO → Analytics**, és kapcsold be az Analytics modult.
2. Állítsd be a használni kívánt mérőket, majd menj a **GDPR / Cookie Bar** fülre.
3. Kapcsold be az **Analytics tracking opt-in** kapcsolót (**Request user consent for analytics tracking**).
4. Kifejezett hozzájáruláshoz hagyd kikapcsolva az **Auto-accept consent on page load** kapcsolót. Ez a külön beállítás a **Accept** gomb megnyomása nélkül indítja a mérést; a banner megjelenítése még nem hozzájárulás.
5. A **Consent per category** alatt tartsd bekapcsolva a **Let visitors choose per category** kapcsolót, ha a látogató külön engedélyezhesse az analitikát és a hirdetést. Kikapcsolva a sávon csak két gomb marad.
6. Kapcsold be az **Allow preference changes** kapcsolót, ha a látogató később is megváltoztathassa a döntését (ekkor egy beállítógomb marad az oldalon).
7. Kattints a **Save changes** gombra, és ürítsd a gyorsítótárat.

![A GDPR / Cookie Bar fül: a döntés menete, a banner szövege, a megjelenés és a színek](./kepek/analitika-sutisav.webp)

*A GDPR / Cookie Bar fül: a döntés menete, a banner szövege, a megjelenés és a színek* (https://minta-bolt.hu/wp-admin/admin.php?page=seopress-google-analytics)

A képen felülről lefelé látszik a sáv helye, a **Consent flow** kapcsolói, a gombok szövegei, a sáv elhelyezése és színei.

A fül neve, a kapcsolók és a mezők feliratai ezen az oldalon angolul jelennek meg, ezért a leírás is a szó szerinti feliratokat használja.

## Kategóriánkénti választás

Ha a **Let visitors choose per category** be van kapcsolva (alapból be van, a frissített oldalakon is, hacsak ki nem kapcsoltad), a sávon három gomb látszik:

- **Accept all**: minden kategóriát engedélyez.
- **Decline all**: csak a Necessary kategóriát hagyja meg.
- **Customize**: kinyitja a kategóriák listáját jelölőnégyzetekkel és egy **Save my choices** gombbal.

| Kategória | Amit a látogató olvas | Google Consent Mode v2 jelzések |
|---|---|---|
| Necessary | Az oldal működéséhez kell, például a döntés megjegyzéséhez. **Always active**, nincs jelölőnégyzete. | Nincs |
| Analytics | Közönségmérés és látogatási statisztika. | `analytics_storage` |
| Advertising | Hirdetések teljesítményének mérése és releváns hirdetések megjelenítése, más oldalakon is. | `ad_storage`, `ad_user_data`, `ad_personalization` |

Minden jelölőnégyzet üresen indul. Ha semmit sem jelölsz, és úgy mentesz, az elutasításnak számít, mint a **Decline all**.

Ha az Accept és Decline gomb szövegét üresen hagytad, ebben a módban a gombok **Accept all** és **Decline all** felirattal jelennek meg. A saját szövegedet megtartja. Az üres üzenet helyett is alapértelmezett szöveg jelenik meg, amely szerint a látogató mindet elfogadhatja, elutasíthatja, vagy kiválaszthatja, mely sütiket engedi.

Kikapcsolt kategóriánkénti választásnál a sávon az Accept és a Decline gomb marad: az Accept minden kategóriát engedélyez, a Decline egyiket sem.

## Az üzenet és a megjelenés

A **Banner content** szakaszban állítható:

| Beállítás | Mit csinál |
|---|---|
| **Cookie consent message** | A sávon megjelenő üzenet. Hivatkozások és egyszerű formázás használható benne. |
| **Accept button text** | Az elfogadó gomb felirata. |
| **Decline button text** | Az elutasító gomb felirata. A régi telepítések a „Close” feliratot használhatták; a felirat átírása nem teszi elfogadássá az elutasítást. |
| **Customize button text** | A kategóriák választóját megnyitó gomb felirata (alapérték: Customize). |
| **Preferences button text** | A beállítógomb felirata (alapérték: Cookie preferences). |
| **Cookie expiration (days)** | Meddig jegyzi meg a döntést. Alapérték: 30 nap. |

Az adatvédelmi oldalra mutató hivatkozáshoz jelöld ki az adatvédelmi oldalt a WordPress beállításaiban, majd a link címének a `[seopress_privacy_page]` rövidkódot add meg.

A **Where to load cookie bar** mezővel választható, hová kerüljön a sáv. Az ajánlott hely a nyitó body címke után van (**After the opening body tag (recommended)**); ehhez a sablonnak támogatnia kell a `wp_body_open` kampót. Ha nem támogatja, válaszd a lábléc helyét, és teszteld újra.

A **Cookie Bar Styling** szakaszban a sáv helyét (**Cookie bar position**), a szöveg igazítását (**Text alignment**), a szélességet (**Width**, alapból pixelben; százalékhoz írj `%` jelet az érték után, például `80%`), a vízszintes igazítást (**Alignment**, csak ha a szélesség nem 100%) és a hátteret (**Backdrop**) állíthatod. A színek külön szakaszokban állnak: **Main settings** (háttér, szöveg, hivatkozás), **Primary button** (az Accept gomb) és **Secondary button** (a Close gomb), mindegyikhez alap- és lebegtetési szín.

## Mit szabályoz a döntés

Az integráció a Google Analyticset, a Matomót, a Microsoft Clarityt és a SEOPressben megadott egyedi követőkódot kezeli. A sablonod, más bővítmények vagy egy külön beállított címkekezelő szkriptjeit nem szabályozza magától: azokat külön kell ellenőrizned.

Minden mérő a számára szükséges kategóriákra vár:

| Mérő | Akkor indul, ha a látogató engedélyezi |
|---|---|
| Google Analytics (GA4) | Az Analytics vagy az Advertising kategóriát. Minden Consent Mode jelzés a saját kategóriáját követi. |
| Matomo | Az Analytics kategóriát. |
| Microsoft Clarity | Az Analytics kategóriát. A Clarity hirdetési tárolási hozzájárulása az Advertisinget követi. |
| Egyedi követőkód (**Custom Tracking** fül: HEAD, BODY és FOOTER kód, például Google Tag Manager) | Az Analytics és az Advertising kategóriát is, mindkettőt. |

Az egyedi kód bármi lehet, hőtérkép és hirdetési pixel is, ezért a SEOPress csak akkor futtatja, ha mindkét kategória engedélyezett. Ha a látogató csak az Advertisinget engedi, a Google-címke betöltődik, de az `analytics_storage` tiltott marad.

Ha a GA4 és a sütisáv is be van kapcsolva, a SEOPress kezeli a Google Consent Mode v2 jelzéseit: `analytics_storage`, `ad_storage`, `ad_user_data` és `ad_personalization`. Az alapérték a tiltás. Az Analytics az `analytics_storage` jelzést engedi, az Advertising a három hirdetési jelzést; az **Accept all** mind a négyet engedi, a **Decline all** mind a négyet tiltja. A Clarity ugyanezt a választ a saját hozzájárulási API-ján kapja. A Consent Mode csak közli a döntést a Google felé, a hozzájárulást nem ő gyűjti.

A beállítás bekapcsolása önmagában nem jelenti, hogy az egész oldalad jogilag megfelel.

## Lejárat, beállítások és kizárt szerepkörök

A **Cookie expiration (days)** mezőben megadott idő után, vagy ha a böngésző sütijeit törlik, a jogosult látogatótól újra kérhető a döntés.

A döntés egyetlen sütiben tárolódik, `seopress-user-consent` néven, amely az engedélyezett kategóriákat függőleges vonallal elválasztva sorolja fel (például `necessary|analytics`). Aki a kategóriás működés előtt válaszolt, megtartja a válaszát, és nem kérdezi újra az oldal: a régi `seopress-user-consent-accept` süti minden kategória engedélyezését, a `seopress-user-consent-close` az összes elutasítását jelenti. Ezek a régi sütik megőrzik a lejáratukat, és akkor törlődnek, ha a látogató újra válaszol.

A beállítógomb újra megnyitja a sávot. Kategóriánkénti választásnál közvetlenül a kategóriák listáját nyitja, a korábban engedélyezettek bejelölve. A Google-címke és a Clarity azonnal értesül az új döntésről, de a hozzájárulás visszavonása nem törli a már elküldött adatot, és nem garantálja, hogy minden már futó harmadik féltől származó szkript leáll. Teszteld a következő oldalbetöltést és az egyedi szkriptjeid viselkedését is.

Az **Analytics → Advanced** fülön a **Excluded roles** listában kijelölt szerepköröket sem méri a rendszer, és nekik a sávot sem mutatja. Teszteléskor jelentkezz ki, vagy használj egy nem kizárt szerepkört, különben a sáv vagy a mérés szándékosan hiányzik.

## A beállítás ellenőrzése

1. Nyiss friss privát böngészőablakot. A gombok megnyomása előtt a böngésző fejlesztői eszközeivel vagy a Google Tag Assistanttal nézd meg a követő kéréseket és a hozzájárulási állapotot.
2. Kattints az **Accept** (vagy **Accept all**) gombra, majd lépj egy másik oldalra. Ellenőrizd, hogy a kívánt mérők futnak, és a döntést tiszteletben tartja.
3. Ismételd meg új, külön munkamenetben a **Decline** (vagy **Decline all**) gombbal. Az analitika nem lehet engedélyezett.
4. Kategóriás működésnél egy újabb friss munkamenetben kattints a **Customize** gombra, jelöld be csak az Analyticset, és kattints a **Save my choices** gombra. Az `analytics_storage` engedélyezett, a három hirdetési jelzés tiltott legyen. A Matomo és a Clarity elindul, az egyedi követőkód nem.
5. Nyisd meg újra a beállításokat, módosítsd a döntést, töltsd újra az oldalt, és teszteld újra.
6. Ismételd meg bekapcsolt gyorsítótárral és JavaScript-optimalizálással. Ha az eredmény eltér, ürítsd a gyorsítótárat, és szűkítsd le, melyik optimalizálási beállítás okozza.

Ha a sáv hiányzik, nézd meg a modulkapcsolót, a hozzájárulás beállítását, a kizárt szerepköröket, a meglévő hozzájárulási sütiket és a sablon beszúrási kampóját.

## Hozzájárulás gyorsítótárazott oldalakon

A SEOPress minden látogató mentett döntését a böngészőjében oldja fel. Ugyanaz a gyorsítótárazott oldal tehát kiszolgálható annak is, aki elfogadott, elutasított, még nem válaszolt, vagy csak néhány kategóriát engedélyezett. Kifejezett hozzájárulásnál a SEOPress mérési tartalma inaktív marad, amíg a hozzájárulás elérhető, utána tölti be az engedélyezett kódot. A visszatérő látogató döntését a következő oldalon újra beolvassa.

A JavaScript késleltetése, összevonása, tömörítése vagy más bővítmények hozzájárulás-kezelői befolyásolhatják a futás sorrendjét. Frissítés vagy beállításváltás után ürítsd az oldal- és a CDN-gyorsítótárat.

### A hozzájárulási süti kizárásának eltávolítása

A régebbi útmutatók azt kérték, hogy a `seopress-user-consent-accept` sütit zárd ki az oldal-gyorsítótárból. Ez már nem kell. Ha felvetted a szabályt, töröld: különben minden elfogadó látogató minden oldalmegtekintésnél megkerüli a gyorsítótárat, ami a legtöbb oldalon a forgalom nagy része. A `seopress-user-consent` sütit sem szabad kizárni.

A gyorsítótárazott oldal minden látogatónak ugyanaz, ezért nincs mit kizárni. A szabály helye a gyorsítótár-bővítményben:

- WP Rocket: **Advanced Rules** fül, **Never Cache Cookies** mező.
- LiteSpeed Cache: **Cache** menü, **Excludes** fül, **Do Not Cache Cookies** mező.

Mentsd, majd ürítsd a teljes gyorsítótárat.

### JavaScript-optimalizálás

A sütisáv a JavaScript-optimalizáló bővítményekkel kizárások nélkül is működik: a sütit a `seopress-cookies` könyvtár nélkül, magától olvassa és írja, ezért a szkriptek futási sorrendje nem számít, és akkor is elindul, ha az optimalizáló az oldal betöltése utánra halasztja. Ha korábban felvettél kizárásokat, megtarthatod őket, nem ártanak.

Régebbi változatoknál a sáv két szkriptje (`seopress-cookies` és `seopress-cookies-ajax`) csak ebben a sorrendben működik. Ha a gyorsítótár-bővítmény összevonja, halasztja vagy késlelteti a JavaScriptet, és a sáv nem jelenik meg (a böngészőkonzolban `Cookies is not defined` hiba látszik), mindkét szkriptet ki kell zárni minden bekapcsolt JavaScript-optimalizálásból. Ha csak az egyiket zárod ki, az töri el a sávot.

- WP Rocket (**File Optimization** fül): add őket a **Excluded JavaScript Files** mezőhöz a **Minify JavaScript files**, a **Load JavaScript deferred** és a **Delay JavaScript execution** alatt.
- LiteSpeed Cache (**Page Optimization** menü): add őket a **JS Excludes** mezőhöz (**JS Settings** fül, a JS Combine használja) és a **JS Deferred / Delayed Excludes** mezőhöz (**Tuning** fül, a Load JS Deferred használja, halasztott és késleltetett módban is).

Soronként egyet írj:

```
seopress-cookies
seopress-cookies-ajax
```

Mentsd, és ürítsd a gyorsítótárat.

### Egy látogató döntése nem hat a másikra

1. Kapcsold be az oldal-gyorsítótárat és a kifejezett hozzájárulást; az automatikus elfogadás maradjon kikapcsolva.
2. Az A böngészőben mentett döntés nélkül tölts be egy oldalt, fogadd el, és nyisd meg újra, hogy a gyorsítótár feltöltődjön.
3. Egy külön B böngészőben, mentett döntés nélkül nyisd meg ugyanazt az URL-t. A sávnak most is döntést kell kérnie. Utasítsd el, és ellenőrizd, hogy B nem örökölte A engedélyét.
4. Térj vissza A-ba, és nézd meg, hogy az elfogadása megmaradt. Fordítsd meg a sorrendet is: elutasító látogatóval töltsd fel a gyorsítótárat, utána látogass elfogadóként.
5. A beállítógombbal módosíts egy döntést, és nézd meg a jelenlegi oldalt és a következő oldalra lépést is.

Az, hogy a mérés beállítása szerepel az oldal forrásában, nem bizonyítja, hogy le is futott: nézd meg a hálózati kéréseket és a mérők hozzájárulási állapotát is. Egy oldalon már lefutott egyedi szkriptnek saját kezelés kell a hozzájárulás visszavonásához.

## Fejlesztőknek

Két szűrő áll rendelkezésre. Egyedi bővítménybe vagy a gyermektéma `functions.php` fájljába tedd őket.

A `seopress_user_consent_categories` a sávon látszó kategóriák címkéjét és leírását módosítja. Csak ez a két mező változtatható: a kategóriák azonosítói (`necessary`, `analytics`, `advertising`) és a hozzájuk tartozó Consent Mode jelzések maradnak, új kategóriát nem vehetsz fel.

```php
add_filter( 'seopress_user_consent_categories', function( $categories ) {
	$categories['analytics']['label']       = 'Statisztika';
	$categories['analytics']['description'] = 'Látogatási statisztika, amely segít jobbá tenni az oldalt.';
	return $categories;
} );
```

A `seopress_user_consent_snippet_categories` azt módosítja, melyik mérő mely kategóriákra vár. A kulcsok: `gtag_js` (Google Analytics), `matomo_js` és `matomo_body_js` (Matomo), `clarity_js` (Clarity), `head_js`, `body_js` és `footer_js` (a HEAD, BODY és FOOTER követőkód) és `custom` (a `seopress_custom_tracking` szűrővel hozzáadott kód). Minden érték alternatívák listája, minden alternatíva olyan kategóriák listája, amelyeknek mind engedélyezettnek kell lenniük: az `array( array( 'analytics' ), array( 'advertising' ) )` bármelyikre elindul, az `array( array( 'analytics', 'advertising' ) )` csak mindkettőre. Az ismeretlen kategóriákat figyelmen kívül hagyja, és az érvényes kategória nélküli mérő mindkettőre vár. A szűrő a hozzájárulásig visszatartott mérőkre vonatkozik, a betöltéskori automatikus elfogadásra nem.

```php
add_filter( 'seopress_user_consent_snippet_categories', function( $requirements ) {
	// A HEAD, BODY és FOOTER követőkód csak az Analytics kategóriára induljon.
	$requirements['head_js']   = array( array( 'analytics' ) );
	$requirements['body_js']   = array( array( 'analytics' ) );
	$requirements['footer_js'] = array( array( 'analytics' ) );
	return $requirements;
} );
```

A böngészőben a `window.seopressConsent.has( 'analytics' )` megmondja, hogy egy kategória engedélyezett-e, a `window.seopressConsent.categories()` pedig visszaadja az engedélyezett kategóriákat (az első válasz előtt `null`). Minden döntés után a SEOPress egy `seopress_consent_updated` eseményt küld a `dataLayer`-be, és egy `seopress.consent` eseményt vált ki a `document`-en. Mindkettő tartalmazza a kategóriák listáját (`seopress_consent_categories` a `dataLayer`-ben, `detail.categories` az eseményben), az összegző érték pedig `accept`, `decline` vagy `partial` lehet.

A `seopress_user_consent` szűrő továbbra is az oldal tetején kiírt alapértelmezett Consent Mode állapotot adja meg.

## Hasonló fejezetek

- [Google Analytics összekötése](https://hub.hellowp.io/hu/plugins/wp-seopress-pro/analitika-google-analytics/)
- [Google Tag Manager hozzáadása](https://hub.hellowp.io/hu/plugins/wp-seopress-pro/analitika-google-tag-manager/)
- [Matomo követés és statisztikák](https://hub.hellowp.io/hu/plugins/wp-seopress-pro/analitika-matomo/)
