=== Biscotti ===
Contributors: biscotti
Tags: cookies, consent, privacy
Requires at least: 6.3
Requires PHP: 7.4
Stable tag: 0.3.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Instalacja publicznego SDK Biscotti i jawne połączenie zarządzania konfiguracją.

== Installation ==
1. Wgraj ZIP w Wtyczki → Dodaj nową → Wyślij wtyczkę i aktywuj.
2. W Ustawienia → Biscotti wpisz adres HTTPS platformy, publiczny klucz i dokładny host WordPressa.
3. Właściciel/admin witryny generuje w platformie jednorazowy token ważny 10 minut.
4. Wklej token i wybierz, czy zachować szkic WordPressa, czy platformy. Nic nie jest publikowane automatycznie.
5. Zweryfikuj DNS i opublikuj konfigurację w platformie. Sprawdź połączenie w WordPressie i włącz instalację SDK.
6. Usuń inne metody instalacji tego samego SDK. Opcjonalnie włącz blokowanie rozpoznanych skryptów WordPressa, wyczyść cache i sprawdź działanie. Pozostałe skrypty wymagają jawnych adapterów.

== External service ==
Wtyczka kontaktuje się z adresem platformy HTTPS wskazanym przez administratora, wyłącznie po konfiguracji. Sprawdzenie wysyła host i klucz witryny. Parowanie wysyła jednorazowy token, host, klucz i wybór źródła; przy zachowaniu WordPressa także szkic banera. Połączone operacje wysyłają sekret serwerowy oraz host; import wysyła szkic i oczekiwaną rewizję. Te operacje zachodzą tylko na żądanie administratora.
Po włączeniu instalacji przeglądarka odwiedzającego pobiera consent.js i publikację ze wskazanej platformy. SDK rejestruje odsłony i aktywne decyzje zgodnie z konfiguracją platformy. Administrator odpowiada za warunki korzystania, informację o prywatności i umowę ze swoim operatorem platformy. Wtyczka nie wysyła danych do stałego serwera producenta.

== Scope ==
Obsługiwane: szkic PL/EN/ES/SK/CS/UK/DE/FR/IT, jawne zachowanie ustawień przy parowaniu, ręczny pull/push, kontrola rewizji, odłączenie, weryfikacja połączenia, dokładny host, pojedynczy loader head, GCM Basic.
Nieobsługiwane: automatyczne blokowanie dowolnych skryptów/iframe/backend cookies, import z innych CMP, automatyczna instalacja GA/GTM, Advanced, współdzielenie zgód między hostami, offline samodzielny CMP, publikacja z WordPressa, konfiguracja całej sieci multisite.
Skrypty wymagają type="text/plain" data-consent-category="analytics" (lub innej dostępnej kategorii). Zewnętrzne adaptery używają data-consent-src. Zwykły aktywny skrypt może wystartować przed SDK mimo domyślnej odmowy GCM.
Cache/minifikacja/optymalizatory nie mogą opóźniać ani przestawiać instalacji. Zmiana ustawień instalacji wymaga wyczyszczenia cache strony.
Odinstalowanie usuwa tylko lokalne opcje wtyczki. Nie kasuje witryn, publikacji, decyzji ani połączeń na platformie; wcześniej unieważnij połączenie w panelu.

== Development ==
HTTP dopuszczalne tylko dla localhost/127.0.0.1, gdy w wp-config.php ustawiono BISCOTTI_ALLOW_LOCAL_HTTP=true i WP_ENVIRONMENT_TYPE='local' lub 'development'. Nie ustawiaj tego wyjątku na publicznym środowisku.

== Automatic blocking ==
Opcjonalne reguły obejmują GA4, Google Ads, Meta Pixel i Clarity dodane przez wp_enqueue_script oraz ich fragmenty inline. Dokładny host i ścieżka, bez zgadywania kategorii GTM. Własne uchwyty można przypisać filtrem biscotti_script_categories. Brak SDK/publikacji pozostawia chronione skrypty nieaktywne. Moduły JS nie są aktywowane. Wymagane jest wyczyszczenie cache i wyłączenie przekształcania chronionych skryptów przez optymalizatory.

= Reguły publikacji i adaptery =

Publikacja zawierająca blockingRules wiąże rozpoznane skrypty GA, Ads, Meta i Clarity z identyfikatorem data-biscotti-rule. Powiązane fragmenty before/after/extra/translations otrzymują ten sam identyfikator. Kod HTML jest nieaktywny jeszcze przed przeglądarką; dopiero aktualna publikacja pobrana przez SDK rozstrzyga kategorię i aktywację. Brak reguły, błąd konfiguracji lub pauza pozostawiają te zasoby nieaktywne. Starszy SDK również nie aktywuje nowych adapterów, ponieważ nie otrzymują one zapasowej kategorii.

Publikacje bez blockingRules zachowują dotychczasowe jawne adaptery kategorii. Własne nieznane skrypty nadal wymagają filtra biscotti_script_categories. Wstrzymanie reguł nie zatrzymuje niezależnych adapterów starego typu i nie jest zgodą użytkownika.

Po aktualizacji wtyczki, przejściu na reguły publikacji i zmianach integracji wyczyść cache HTML WordPressa/CDN. Starsza kopia HTML może nadal zawierać adaptery kategorii. SDK pobiera publikację przy otwarciu dokumentu; nie jest to zdalny wyłącznik już działającej karty.

Obsługiwane są klasyczne skrypty z kolejki WordPress. module i nomodule pozostają nieaktywne jako unsupported. Zachowane są nonce, integrity, crossorigin i referrerpolicy; fragmenty after czekają na załadowanie external. Kod wklejony do motywu, preload, iframe, piksele, kod backendu oraz nieoznaczone zależności kolejki wymagają osobnej integracji. W jednym handle nie łącz analityki i reklam: sam adres loadera GA4 nie dowodzi przeznaczenia jego fragmentów inline.
