Image

API zgody WP

Opis

API zgody WP to wtyczka, która standaryzuje komunikację między wtyczkami dotyczącą akceptowanych kategorii zgód. Wymaga wtyczki banera plików ciasteczka i co najmniej jednej innej wtyczki obsługującej API zgody WP.

Dzięki tej wtyczce wszystkie obsługujące ją wtyczki mogą używać tego samego zestawu metod do odczytywania i rejestrowania bieżącej kategorii zgody, co pozwala wtyczkom do zarządzania zgodami i innym wtyczkom na współpracę, zwiększając tym samym zgodność z przepisami o ochronie prywatności.

UWAGA: sama wtyczka nie obsługuje zgody. Pokaże Ci, ile masz wtyczek bez obsługi API zgody i poprawi zgodność z przepisami w Twojej witrynie, zapewniając płynną komunikację między wtyczkami banerów plików ciasteczka a wtyczkami, które ustawiają pliki ciasteczka lub śledzą dane użytkownika.

Jaki problem rozwiązuje ta wtyczka?

Obecnie wtyczka do zarządzania zgodami może blokować usługi stron trzecich, takie jak Facebook, Mapy Google, Twitter itp. Jeśli jednak wtyczka WordPress umieści plik ciasteczka PHP, wtyczka do zarządzania zgodami nie będzie w stanie temu zapobiec.

Po drugie, niektóre wtyczki integrują kod śledzenia po stronie klienta w plikach JavaScript, które po zablokowaniu powodują awarię witryny.

Albo, jeśli kod JavaScript takiej wtyczki zostanie zminimalizowany, spowoduje to, że adres URL będzie nierozpoznawalny i nie zostanie wykryty przez automatyczny skrypt blokujący.

Wreszcie, podejście blokujące wymaga listy wszystkich typów adresów URL, które śledzą dane. Ogólne API, do którego stosują się wtyczki, może znacznie ułatwić webmasterowi zapewnienie zgodności witryny z zasadami.

Czy korzystanie z tego interfejsu API uniemożliwia usługom zewnętrznym śledzenie danych użytkownika?

To API jest przeznaczone przede wszystkim do obsługi zgodnych plików ciasteczka własnych lub śledzenia przez wtyczki WordPress. Jeśli taka wtyczka uruchamia, na przykład, Facebooka,
korzystanie z tego API będzie pomocne. Jeśli użytkownik osadza ramkę iframe Facebooka, potrzebne jest narzędzie blokujące, które początkowo wyłącza ramkę iframe i/lub skrypty.

Skrypty stron trzecich muszą być blokowane poprzez blokowanie funkcjonalności we wtyczce do zarządzania zgodami. Wprowadzenie tego w rdzeniu byłoby zbyt inwazyjne i nie dotyczy wszystkich użytkowników: taka funkcja jest wymagana tylko dla użytkowników z regionów, w których użytkownicy wyrażają zgodę, takich jak Unia Europejska. Taka funkcja również niesie ze sobą ryzyko awarii. Co więcej, blokowanie takich skryptów i wyświetlanie ładnego symbolu zastępczego wymaga jeszcze bardziej zaawansowanego kodu, który moim zdaniem nie powinien być częścią WordPressa, z tych samych powodów.

Jak to działa?

Istnieją dwa wskaźniki, które razem wskazują, czy zgoda została udzielona na określoną kategorię zgód, np. „marketing”:
1) typ zgody oparty na regionie, który
może być zgoda, zrezygnuj lub innymi możliwymi typami zgody;
2) oraz wybór użytkownika: nieustawianie, zezwalanie lub odrzucanie.

consent_type to funkcja, która opakowuje filtr „wp_get_consent_type”. Jeśli nie ma wtyczki do zarządzania zgodami, która mogłaby go ustawić, zwróci wartość false. Spowoduje to, że wszystkie kategorie zgód zwrócą wartość true, co umożliwi ustawienie plików ciasteczka we wszystkich kategoriach.

Jeśli za pomocą tego filtra zostanie ustawiona zgoda, kategoria zwróci wartość true tylko wtedy, gdy wartością wyboru użytkownika będzie „zezwól”.

Jeśli typem zgody opartym na regionie jest zrezygnuj, zwrócona zostanie wartość true, jeśli wybór użytkownika nie został określony lub wynosi „zezwól”.

Po stronie klienta wtyczka do zarządzania zgodami może dynamicznie manipulować typem zgody i ustawiać kilka kategorii plików ciasteczka.

Wtyczka może używać haka do nasłuchiwania zmian lub sprawdzania wartości danej kategorii.

Kategorie i większość innych rzeczy można rozszerzyć za pomocą filtra.

Istniejące integracje

Skategoryzowane i posortowane alfabetycznie

Przykładowa wtyczka

  • Przykładowa wtyczka. Wtyczka składa się zasadniczo z krótkiego kodu z elementem div, który wyświetla komunikat o śledzeniu lub braku śledzenia. Faktyczne śledzenie nie jest realizowane 🙂

Dostawcy usług zarządzania zgodami

Wtyczki wymagające zgody

Witryna demo

wpconsentapi.org
Poniżej znajdują się wtyczki użyte do skonfigurowania witryny demonstracyjnej:

javascript, wtyczka do zarządzania zgodami

//set consent type
window.wp_consent_type = 'optin'

//dispatch event when consent type is defined. This is useful if the region is detected server side, so the consent type is defined later during the pageload
let event = new CustomEvent('wp_consent_type_defined');
document.dispatchEvent( event );

//consent management plugin sets cookie when consent category value changes
wp_set_consent('marketing', 'allow');

javascript, wtyczka śledząca

//listen to consent change event
document.addEventListener("wp_listen_for_consent_change", function (e) {
  var changedConsentCategory = e.detail;
  for (var key in changedConsentCategory) {
    if (changedConsentCategory.hasOwnProperty(key)) {
      if (key === 'marketing' && changedConsentCategory[key] === 'allow') {
        console.log("just given consent, track user")
      }
    }
  }
});

//basic implementation of consent check:
if (wp_has_consent('marketing')){
  activateMarketing();
  console.log("set marketing stuff now!");
} else {
  console.log("No marketing stuff please!");
}

PHP

//declare compliance with consent level API
$plugin = plugin_basename( __FILE__ );
add_filter( "wp_consent_api_registered_{$plugin}", '__return_true' );

/**
* Example how a plugin can register cookies with the consent API
 * These cookies can then be shown on the front-end, to the user, with wp_get_cookie_info()
 */

function my_wordpress_register_cookies(){
    if ( function_exists( 'wp_add_cookie_info' ) ) {
        wp_add_cookie_info( 'AMP_token', 'AMP', 'marketing', __( 'Session' ), __( 'Store a unique User ID.' ) );
    }
}
add_action('plugins_loaded', 'my_wordpress_register_cookies');


if (wp_has_consent('marketing')){
//do marketing stuff
}

Zgoda na poziomie usług

Oprócz zgody opartej na kategorii, API obsługuje kontrolę zgody na poziomie usługi. Dzięki temu wtyczki do zarządzania zgodą mogą udzielać lub odmawiać zgody dla określonych usług (takich jak „Google Analytics” lub „Facebook Pixel”) niezależnie od ich kategorii. Podczas sprawdzania zgody na usługę za pomocą funkcji wp_has_service_consent(), API najpierw sprawdza, czy istnieje wyraźna zgoda dla danej usługi. Jeśli wyraźna zgoda nie zostanie ustawiona, wraca do statusu zgody kategorii usługi. Umożliwia to precyzyjną kontrolę: użytkownik może ogólnie zaakceptować pliki ciasteczka statystyczne, ale wyraźnie odmówić zgody dla konkretnej usługi analitycznej.

Zgodę na usługę można sprawdzić i ustawić zarówno po stronie serwera (PHP), jak i klienta (JavaScript):

PHP:

//check if a specific service has consent
if ( wp_has_service_consent( 'google-analytics' ) ) {
    //activate google analytics
}

//check if a service is explicitly denied
if ( wp_is_service_denied( 'facebook-pixel' ) ) {
    //service was explicitly denied by user
}

//set service consent
wp_set_service_consent( 'google-analytics', true ); //grant consent
wp_set_service_consent( 'facebook-pixel', false ); //deny consent

//listen for service consent changes
add_action( 'wp_consent_service_changed', function( $service, $consented ) {
    error_log( "Service {$service} consent changed to: " . ( $consented ? 'granted' : 'denied' ) );
}, 10, 2 );

JavaScript:

//check service consent
if ( wp_has_service_consent( 'youtube' ) ) {
    //activate tracking
}

//check if explicitly denied
if ( wp_is_service_denied( 'facebook-pixel' ) ) {
    //service denied
}

//set service consent
wp_set_service_consent( 'youtube', true );

//listen for service consent changes
document.addEventListener( 'wp_consent_api_status_change_service', function( e ) {
    console.log( 'Service: ' + e.detail.service + ', consented: ' + e.detail.value );
});

Masz jakieś sugestie dotyczące kodu? Jesteśmy również na GitHubie!

Instalacja

Aby zainstalować tę wtyczkę:

Pobierz wtyczkę
Prześlij wtyczkę do katalogu wp-content/plugins.
Przejdź do karty „wtyczki” w panelu administracyjnym WordPressa, a następnie kliknij „włącz”.

Najczęściej zadawane pytania

Czy ta wtyczka blokuje usługom zewnętrznym możliwość umieszczania plików ciasteczka?

Nie, ta wtyczka zapewnia strukturę, dzięki której wtyczki mogą dowiedzieć się, czy mogą umieszczać pliki ciasteczka lub śledzić dane użytkownika.
Wtyczka wymaga zarówno wtyczki do zarządzania zgodami, jak i wtyczki, która śledzi poziom zgody, który można odczytać z tego interfejsu API.

Jak mam zintegrować moją wtyczkę?

W przypadku każdej akcji, która umieszcza pliki ciasteczka lub śledzi dane użytkownika, należy rozważyć, jaki rodzaj śledzenia ma miejsce. Istnieje 5 kategorii zgód:
funkcjonalna, anonimowa statystyka, statystyka, preferencje, marketing. Zostały one wyjaśnione poniżej. Twój kod powinien sprawdzać, czy zgoda została udzielona dla odpowiedniej kategorii. Jeśli żadna wtyczka banera plików ciasteczka nie jest włączona,
interfejs API zgody zawsze zwróci zgodę (prawda).
Sprawdź przykładową wtyczkę i powyższe przykłady kodu.

Jaka jest różnica pomiędzy kategoriami zgód?

Statystyki:
Pliki ciasteczka lub inne formy lokalnego przechowywania danych, które są wykorzystywane wyłącznie do celów statystycznych (pliki ciasteczka analityczne).

Statystyki-anonimowe:
Pliki ciasteczka lub inne formy lokalnego przechowywania danych, które są wykorzystywane wyłącznie do anonimowych celów statystycznych (anonimowe pliki ciasteczka analityczne), umieszczane w domenie własnej i nieumożliwiające identyfikacji konkretnych osób.

Marketing:
Pliki ciasteczka lub inne formy pamięci lokalnej wymagane do tworzenia profili użytkowników w celu wysyłania reklam lub śledzenia użytkownika na witrynie internetowej lub w różnych witrynach internetowych w podobnych celach marketingowych.

Funkcjonalne:
Plik ciasteczka lub jakakolwiek inna forma lokalnego przechowywania danych jest wykorzystywana wyłącznie w celu realizacji transmisji komunikatu za pośrednictwem sieci komunikacji elektronicznej;

LUB

Techniczne przechowywanie lub dostęp jest absolutnie niezbędny do prawnie uzasadnionego celu, jakim jest umożliwienie korzystania z konkretnej usługi wyraźnie zażądanej przez abonenta lub użytkownika. Jeśli pliki ciasteczka są wyłączone, żądana funkcjonalność nie będzie dostępna. To sprawia, że ​​są to niezbędne pliki ciasteczka funkcjonalne.

Preferencje:
Pliki ciasteczka lub jakakolwiek inna forma lokalnego przechowywania danych, która nie może być uznana za dane statystyczne, anonimowe dane statystyczne, dane marketingowe lub funkcjonalne, a której techniczne przechowywanie lub dostęp jest niezbędny do uzasadnionego celu przechowywania preferencji.

Recenzje

Przeczytaj 1 recenzje

Kontrybutorzy i deweloperzy

Wtyczka „API zgody WP” została przetłumaczona na 20 języków. Podziękuj tłumaczom za ich wkład.

Przetłumacz wtyczkę “API zgody WP” na swój język.

Interesuje cię rozwój wtyczki?

Przeglądaj kod, sprawdź repozytorium SVN lub czytaj dziennik rozwoju przez RSS.

Rejestr zmian

2.0.0

  • New: Service-level consent API – allows granular consent control per service in addition to category-based consent
  • New: wp_has_service_consent() function to check if a specific service has consent
  • New: wp_is_service_denied() function to check if a specific service is explicitly denied
  • New: wp_set_service_consent() function to set consent for a specific service
  • New: wp_consent_service_changed action hook fires when service consent changes
  • New: JavaScript functions wp_has_service_consent(), wp_is_service_denied(), and wp_set_service_consent()
  • New: JavaScript event wp_consent_api_status_change_service for service consent changes
  • Improvement: Added type hints throughout codebase for better code quality and IDE support
  • Improvement: Added init() method for cleaner plugin initialization
  • Security: escape logged notice in _doing_it_wrong function, props @mujuonly

1.0.8

  • Updated tested up to
  • Dropped loading of translations, and loading of plugin_data, to prevent translation loading notices by WordPress 6.7, props @mujuonly
  • Dropped obsolete function wp_has_cookie_info, props @szepeviktor

1.0.7

  • Tested up to

1.0.6

  • Tested up to

1.0.5

  • tested up to

1.0.4

  • Improvement: only fire on change event if an actual change was detected on the consent.

1.0.3

  • Fix: wp_has_consent function contained a condition which caused it to always return true on serverside optin consent checks.

1.0.2

  • Fix $collected_personal_data documentation, as $is_personal_data was deprecated (props @jazzsequence, https://github.com/rlankhorst/wp-consent-level-api/issues/54)
  • Fix the docblock so it reflects the actual value returned (props @jazzsequence, https://github.com/rlankhorst/wp-consent-level-api/issues/52)
  • Styling changes to site health
  • Code structure changes
  • Removed is_personal_data property, as it’s implicitly contained in the personaldata property
  • Made cookie prefix filterable props @jazzsequence

1.0.1

  • Cookiebot added as existing integration
  • Some small improvements to comply with WordPress coding styles

1.0.0

  • changed consent_api_setcookie into consent_api_set_cookie for naming consistency with the getcookie method
  • added prefix in javascript set and get methods, to be compatible with PHP cookies, props @phpgeek
  • removed duplicate statistics category, props @phpgeek