# Fejlesztőknek

> A hozzájárulás lekérdezése PHP-szűrőkkel és böngészős JS API-val, HTML-attribútumok, a REST-végpontok és az abilities.

## Lábléc-link a beállításokhoz

Ha a lebegő gombot kikapcsolod, adj más utat a döntés módosításához:

```html title="Lábléc"
<a href="#" data-lw-cookie-open-preferences>Cookie-beállítások</a>
```

További attribútumok gombokhoz, linkekhez: `data-lw-cookie-accept`, `data-lw-cookie-reject`, `data-lw-cookie-customize`, `data-lw-cookie-save`, `data-lw-cookie-close-modal`.

## Böngészős JS API

`window.LWCookie`: `acceptAll()`, `rejectAll()`, `openPreferences()`, `deleteAllCookies()`, `saveConsent(categories, actionType)`, `acceptCategory(category)`, `getConsent()`, `isAllowed(category)`.

Esemény: `lwCookieConsent` a `window`-on (`detail: {categories, action}`). GTM dataLayer esemény: `lw_cookie_consent_update`.

Saját beágyazás blokkolt formában: a bővítmény README-jének „Integrating Custom Embeds” része írja le (`data-lw-blocked`, `data-lw-category`, `data-lw-original-src`).

## PHP-szűrők

| Szűrő | Mire jó |
|---|---|
| `lw_cookie_consent_categories` | `apply_filters( 'lw_cookie_consent_categories', [] )`: kategóriánként igaz/hamis a látogató cookie-ja alapján. |
| `lw_cookie_has_consent` | Adott-e a látogató bármilyen hozzájárulást. |
| `lw_cookie_is_category_allowed` | `apply_filters( 'lw_cookie_is_category_allowed', false, 'analytics' )`: engedélyezett-e a kategória. Eltérő irányelv-verziónál hamis. |
| `lw_cookie_consent_id` | A látogató hozzájárulás-azonosítója a cookie-ból. |
| `lw_cookie_known_cookies` | Más bővítmény bejelentheti a saját cookie-jait (név, szolgáltató, cél, időtartam, kategória, típus). Megjelennek a nyilatkozatban és a szkennerben. |

> **Gyorsítótár mögött**
>
> A szűrők a szerver által látott cookie-t olvassák. Teljes oldalas gyorsítótár mögött a szerveroldali kimenet ne függjön a hozzájárulástól; ilyenkor a JS API-t használd.

wp-config-konstans nincs.

## REST

Namespace: `lw-cookie/v1`. A látogató böngészője a `POST /wp-json/lw-cookie/v1/consent` végpontot hívja a döntés naplózásához. Ugyanarról az IP-ről 5 mp-en belül ismételve: HTTP 429.

Az admin végpontok (csak adminisztrátor, `manage_options`):

| Végpont | Metódus | Mit csinál |
|---|---|---|
| `/lw-cookie/v1/admin/settings` | GET | Az összes beállítás. |
| `/lw-cookie/v1/admin/settings` | POST | Részleges mentés: csak a beküldött kulcsok változnak, a felülettel azonos ellenőrzéssel. |
| `/lw-cookie/v1/scan-results` | GET | A szkenner eredménye. |
| `/lw-cookie/v1/clear-scan` | POST | A szkenner eredményének törlése. |
| `/lw-cookie/v1/admin/migration/complianz` | GET / POST | A Complianz-import előnézete / végrehajtása. |

```bash title="Consent Mode be, 180 napos hozzájárulás"
curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" -X POST \
  -H "Content-Type: application/json" \
  -d '{"gcm_enabled":true,"consent_duration":180}' \
  https://pelda.hu/wp-json/lw-cookie/v1/admin/settings
```

Az egyedi blokkolási szabályoknál a teljes listát kell küldeni:

```bash title="Egyedi blokkolási szabály"
curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" -X POST \
  -H "Content-Type: application/json" \
  -d '{"custom_blocking_rules":[{"pattern":"code.tidio.co","category":"functional"}]}' \
  https://pelda.hu/wp-json/lw-cookie/v1/admin/settings
```

## Abilities (az LW Site Manager mellett)

Ha az [LW Site Manager](https://hub.hellowp.io/hu/docs/lw-plugins/) is aktív, az LW Cookie négy képességet regisztrál „Cookie-hozzájárulás” kategóriában. Csak adminisztrátor.

| Ability | Mit csinál |
|---|---|
| `lw-cookie/get-options` | A beállítások lekérése. |
| `lw-cookie/set-options` | Beállítások írása, a felülettel azonos ellenőrzéssel. Válasz: „%1$d beállítás frissült, %2$d elutasítva.” |
| `lw-cookie/get-consent-stats` | Hozzájárulási statisztika (`days`). |
| `lw-cookie/scan-cookies` | Cookie-k keresése, csak a fejléc-vizsgálattal. |

A WordPress Abilities REST-felületén hívhatók: `/wp-json/wp-abilities/v1/abilities/<név>/run`, olvasáshoz GET, íráshoz POST `{"input": {...}}` törzzsel.

```bash title="Lebegő doboz, saját színnel"
curl -u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" -X POST \
  -H "Content-Type: application/json" \
  -d '{"input":{"options":{"banner_layout":"box","primary_color":"#c05621"}}}' \
  https://pelda.hu/wp-json/wp-abilities/v1/abilities/lw-cookie/set-options/run
```
