Skip to Content

Cookie Consent

Cookie Consent er et fuldt tilpasseligt, GDPR- og CCPA-kompatibelt cookie-samtykkebanner til WordPress. Det giver dine besøgende fuld kontrol over, hvilke cookies og sporingsscripts der må køre på sitet, organiserer cookies i overskuelige kategorier, forhindrer ikke-nødvendige scripts i at indlæse uden godkendelse og fører en uomgængelig samtykkelog, så du kan dokumentere compliance under audits.

Pluginet er let, har ingen frontend-afhængigheder, leveres med en runtime i ren JavaScript og spiller sammen med Polyglot-pluginet, så bannerteksten oversættes automatisk til hvert sprog på dit site.

Forhåndsvisning af cookie-samtykkedialogen
Forhåndsvisning af cookie-samtykkedialogen

Højdepunkter

  • Samtykke pr. kategori. Cookies samles fra start i tre kategorier: Nødvendige (altid aktive), Analytiske (Google Analytics, Matomo, Hotjar, Mixpanel) og Marketing (Facebook Pixel, LinkedIn Insight, Google Ads).
  • Automatisk scriptblokering. Tilføj URL-mønstre for de scripts, der skal blokeres, indtil samtykke gives. Hvert mønster knyttes til en kategori og frigives automatisk i samme øjeblik, den besøgende takker ja.
  • Fem bannerpositioner. Vælg mellem nederst venstre, nederst højre, nederst centreret, øverst og en centreret modal.
  • Live udseendeeditor. Konfigurer primær-, baggrunds- og tekstfarver med native farveprøve + hex-vælger, plus en valgfri flydende indstillingsknap. En live-preview viser ændringerne, før du gemmer.
  • Samtykkelog og statistik. Hver samtykkebeslutning gemmes i en dedikeret tabel. Et indbygget dashboard viser samlede samtykker, acceptrater pr. kategori og en pagineret daglig opdeling.
  • Flersproget editor. Vælg redigeringssproget i en dropdown på fanerne Generelt og Kategorier, og oversæt hver synlig tekst pr. locale. Med det valgfri Polyglot-plugin installeret udfylder en AI Translate-knap ethvert målsprog ud fra kildeteksten.
  • Indbygget licens og opdateringer. Indtast licensnøglen på Generelt-fanen for at åbne automatiske opdateringer med ét klik fra Slotix’ opdateringsserver — ingen manuel ZIP-upload nødvendig.
  • Justerbar cookielevetid. Samtykkecookien kan sættes til at udløbe alt fra 1 til 730 dage.
  • Udviklervenligt. PHP- og JavaScript-API’er plus en DOM-event ccm:consent-updated lader dig integrere med custom themes, plugins og tredjeparts tag managers.

Krav

KomponentMinimumsversion
WordPress5.8 (testet op til 7.0)
PHP7.4
MySQL5.7
MariaDB10.3

Pluginet virker med ethvert moderne theme. Ingen ekstra biblioteker, build-trin eller eksterne tjenester er nødvendige, for at frontendbanneret kan køre. Polyglot er valgfrit; installer det kun, hvis du har brug for flersprogede oversættelser af banneret.

Installation

  1. Hent den seneste cookie-consent.zip fra Slotix’ pluginportal eller fra din købsbekræftelse.
  2. Gå i WordPress til Plugins → Tilføj nyt → Upload plugin.
  3. Vælg ZIP-filen og klik på Installer nu.
  4. Klik på Aktiver plugin, når installationen er færdig.
  5. Åbn Indstillinger → Cookie Consent for at starte konfigurationen. På en frisk installation er banneret slået til med fornuftige standarder, men du bør gennemgå hver fane, før du går live.

Alternativt kan du uploade den udpakkede mappe cookie-consent til /wp-content/plugins/ via SFTP og aktivere pluginet fra Plugins → Installerede plugins.

Konfiguration

Indstillingsskærmen er opdelt i fem faner: Generelt, Udseende, Kategorier, Scriptblokering og Statistik. Gennemgå dem i rækkefølge første gang.

Generelt

Fanen Generelle indstillinger
Fanen Generelle indstillinger

Generelt-fanen er delt i fire kort, oppefra og ned: Licens, vælgeren Redigeringssprog, Bannertekster og Globale indstillinger.

Licens. Indsæt den licensnøgle, du modtog i bekræftelsesmailen efter købet — for eksempel PILOT-XXXX-XXXX-XXXX-XXXX. Klik på Verificer og gem; pluginet kontakter Slotix’ opdateringsserver, validerer nøglen mod dit domæne og åbner for automatiske opdateringer med ét klik fra WordPress’ Plugins-skærm. Uden en nøgle virker pluginet stadig, men du skal uploade ZIP-filer manuelt ved hver udgivelse.

Redigeringssprog. En dropdown, der lister de sprog, som lige nu er slået til på sitet (som standard engelsk, italiensk, spansk, fransk og tysk). Hvert tekstfelt nedenfor gemmes pr. sprog — et skift i dropdownen udveksler de synlige værdier uden at miste de øvrige. Hvis det valgfri Polyglot-plugin er installeret og aktivt, dukker en knap Translate with AI op ved siden af vælgeren; et klik udfylder det aktuelle målsprog ud fra standardsprogets kilde.

Bannertekster. Tekster, der vises til besøgende. Hvert felt lokaliseres efter det aktive redigeringssprog.

  • Bannertitel — overskriften øverst i banneret; standardteksten er “We value your privacy”.
  • Bannerbeskrivelse — forklarende afsnit. Nævn hvilke cookies du sætter, og link til den fulde privatlivspolitik. Den bogstavelige tekst “Privacy Policy” inde i beskrivelsen omdannes automatisk til et link til den konfigurerede privatlivspolitik-URL.
  • Accept all-knap — standardteksten er “Accept all”. Lader den besøgende sige ja til alle kategorier.
  • Decline all-knap — standardteksten er “Decline all”. GDPR kræver, at denne knap er lige så fremtrædende som Accept All.
  • Cookie settings-knap — standardteksten er “Cookie settings”. Åbner den granulære samtykkemodal fra banneret.
  • Accept selected-knap — standardteksten er “Accept selected”. Vises inde i modalen; gemmer det, den besøgende har slået til, og lukker dialogen.

Globale indstillinger. Gælder på tværs af alle sprog.

  • Privatlivspolitik-URL — hvor det indlejrede “Privacy Policy”-link i bannerbeskrivelsen peger hen. Tager en relativ sti (/privacy-policy) eller en fuld URL. Lad være tomt for at skjule linket.
  • Cookielevetid — hvor mange dage samtykkebeslutningen huskes. Tilladte værdier: 1 til 730. GDPR-anbefalingen er 365 dage; længere værdier reducerer gentagne prompts, men kan blive markeret af strenge revisorer.

Udseende

Fanen Udseende
Fanen Udseende

Udseende-fanen er organiseret i tre sektioner: Layout, Farver og Preview.

Layout.

  • Bannerposition — vælg nederst venstre, nederst højre, nederst centreret, topbjælke eller centermodal. Centermodalen viser en centreret dialog med en backdrop, der spærrer for interaktion med siden, indtil der er truffet en beslutning; brug den kun, når streng compliance kræver det, da den er mere påtrængende.
  • Flydende knap — et flueben. Når den er slået til, ligger et lille ikon forankret i hjørnet af siden, så besøgende kan genåbne samtykkeindstillingerne når som helst. Påkrævet i nogle jurisdiktioner (især Italien og Frankrig).

Farver. Hver række kombinerer en native farveprøve med et hex-felt — et klik på prøven åbner styresystemets farvevælger, og hex-værdien holdes synkroniseret med prøven i begge retninger.

  • Primærfarve — bruges til knapper og toggles i modalen. Vælg en farve, der opfylder WCAG AA-kontrast mod hvid tekst.
  • Baggrundsfarve — baggrunden i banner og modal. Standard er hvid.
  • Tekstfarve — brødtekst. Standard er en mørk grå.

Preview. Et lille live-banner ligger under farverækkerne og opdateres i realtid, når du ændrer titler, beskrivelser, knaptekster og farver andre steder i administrationen — så du kan verificere resultatet, før du gemmer.

Kategorier

Fanen Kategorier
Fanen Kategorier

Tre kategorier følger med pluginet. Du kan omdøbe dem og redigere deres beskrivelser pr. sprog. Kategorien Nødvendige er altid aktiv og vises for besøgende med et “Always on”-mærkat i stedet for en toggle — den kan ikke deaktiveres, hverken af dig eller af den besøgende.

  • Nødvendige. Cookies, der kræves, for at sitet fungerer — session, autentificering, sikkerhedstokens, sprogvalg. Altid aktive.
  • Analytiske. Statistiske cookies, der måler, hvordan besøgende interagerer med sitet. Eksempler: _ga, _gid, _hjSession, mp_*.
  • Marketing. Cookies, der bruges til at spore besøgende på tværs af sites til annoncering. Eksempler: _fbp, fr, IDE, li_sugr.

For hver ikke-nødvendig kategori kan du redigere:

  • Navn — vises som kategoritekst i indstillingsmodalen. Lokaliseres efter redigeringssproget.
  • Beskrivelse — vises under titlen. Forklar i klart sprog, hvilke scripts kategorien styrer. Lokaliseres efter redigeringssproget.
  • Slået til som standard — når valgt, starter toggle i positionen ON, når en førstegangsbesøgende åbner modalen (han kan stadig slå den fra, før der klikkes Accept Selected). Når ikke valgt, starter toggle i positionen OFF.

Fanen Kategorier respekterer vælgeren Redigeringssprog øverst, så du kan skrive italienske beskrivelser til det italienske banner og engelske beskrivelser til det engelske banner uafhængigt af hinanden. De strukturelle indstillinger (hvilke kategorier der findes, om de er påkrævet, og deres standardtilstand) er globale og delt på tværs af sprog.

Scriptblokering

Fanen Scriptblokering
Fanen Scriptblokering

Det er her, compliance bliver konkret. Uden scriptblokering er banneret pynt — besøgende kan afvise cookies, men tredjepartsscripts vil stadig blive indlæst.

Fanen er delt i en formular Tilføj nyt scriptmønster øverst og to tabeller nedenunder, én for kategorien Analytiske og én for Marketing.

Tilføj-formularen tager tre felter:

  • Navn — en menneskelæsbar etiket, der vises i admin-tabellerne (f.eks. “Google Analytics”). Ikke synlig for besøgende.
  • URL-mønster — en substring, der matches uden hensyn til store/små bogstaver mod hvert scripts src-attribut og inline-body. Eksempler: google-analytics.com, googletagmanager.com, connect.facebook.net, hotjar.com, linkedin.com/insight.
  • Kategori — Analytiske eller Marketing. Scriptet indlæses først, når den besøgende har sagt ja til den kategori.

Hver række i tabellerne Analytiske / Marketing viser navn, mønster, en statuskontakt pr. række (slå til/fra uden at slette) og en sletteknap. Pluginet kommer med et startsæt af mønstre for de mest almindelige analytics- og annonceplatforme; gennemgå listen og udvid den ud fra din faktiske tag manager-konfiguration.

Mønstre matches ved hver sideindlæsning. Blokerede scripts får deres type-attribut omskrevet til text/plain, så browseren ikke kører dem. Når samtykke gives, finder runtime’en de blokerede tags, gendanner deres type til text/javascript og genindsætter dem, så de kører med det samme uden en sideopdatering.

Statistik

Statistik-dashboardet
Statistik-dashboardet

Statistik-fanen er skrivebeskyttet og består af tre KPI-felter øverst og en pagineret tabel Daglig opdeling nedenunder.

KPI-felter.

  • Samtykker i alt — hvert Accept All, Decline All eller Accept Selected tæller som én post.
  • Analytiske accepterede — samlet antal besøgende, der har sagt ja til Analytiske, med acceptprocenten i forhold til Samtykker i alt.
  • Marketing accepterede — det samme for Marketing.

Daglig opdeling. En tabel med én række pr. kalenderdag, hvor mindst én samtykkebeslutning er registreret, med dato, total, analytiske og marketing-acceptantal. Listen sorteres nyeste først og pagineres med 15 rækker pr. side; brug navigationsknapperne (« ») eller skriv et sidenummer direkte i feltet for at hoppe. Øverst til højre vises samlet antal dage.

Brug tallene til at vurdere, hvor stor en andel af din analytics-trafik der går tabt på samtykkeafslag, og til at vise revisorer, at samtykkeindsamlingen fungerer.

Brug

Når banneret er konfigureret, vises det automatisk ved første besøg og efter at samtykkecookien er udløbet. Ingen shortcodes eller template-tags er nødvendige.

Genåbn indstillingsmodalen

Hvis den flydende knap er slået fra, kan du lægge et link et vilkårligt sted på sitet, der lader besøgende genåbne indstillingerne. Brug et almindeligt anchor med en klasse:

<a href="#" class="ccm-open-settings">Cookie preferences</a>

Ethvert element med klassen ccm-open-settings åbner samtykkemodalen ved klik. Nyttigt til footer-links og kontosider.

PHP-API

Serverkode kan forgrene sig på samtykke, før der udsendes markup eller enqueues scripts:

if ( function_exists( 'cookie_consent' ) && cookie_consent()->public->has_consent( 'analytical' ) ) { wp_enqueue_script( 'my-analytics', 'https://example.com/analytics.js', array(), null, true ); }

Kategorier accepteret af has_consent() er slug-værdierne fra Kategorier-fanen: necessary, analytical, marketing plus enhver brugerdefineret slug, du har tilføjet.

JavaScript-API

Frontenden eksponerer et globalt CookieConsent-objekt med et lille, stabilt API:

// Check whether the visitor has opted in to a specific category. CookieConsent.hasConsent('marketing'); // → true | false // Read the full consent object. CookieConsent.getConsent(); // → { necessary: true, analytical: true, marketing: false, ts: 1716000000 } // Programmatically open the settings modal. CookieConsent.openSettings(); // Wipe the stored decision so the banner reappears. CookieConsent.resetConsent();

Event for samtykkeændring

Runtime’en udsender en DOM-event, hver gang samtykke gives, opdateres eller trækkes tilbage. Lyt efter den for at drive dine egne integrationer — for eksempel for at sende et custom dataLayer-event til Google Tag Manager:

document.addEventListener('ccm:consent-updated', function (event) { const consent = event.detail; window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'cookie_consent_update', analytical: consent.analytical, marketing: consent.marketing, }); });

Event-payload’et spejler det objekt, CookieConsent.getConsent() returnerer.

Filter-hook

PHP-udviklere kan ændre indstillingsobjektet, der sendes til frontendens runtime, via filteret ccm_js_settings. Det er nyttigt, hvis du vil overstyre tekst pr. sprog eller pr. side uden at røre databasen:

add_filter( 'ccm_js_settings', function ( $settings ) { if ( is_page( 'corporate' ) ) { $settings['title'] = __( 'Corporate cookie policy', 'my-theme' ); } return $settings; } );

Databasetabeller

Ved aktivering opretter pluginet to tabeller i WordPress-databasen:

  • {wp_prefix}ccm_consents — én række pr. samtykkebeslutning med tidsstempel, hashet IP, user agent og de boolean-valg, der er foretaget pr. kategori.
  • {wp_prefix}ccm_blocked_scripts — de scriptblokeringsmønstre, der er konfigureret i administrationen.

Begge tabeller fjernes af den medfølgende uninstall.php, når pluginet slettes via WordPress’ brugerflade.

Skærmbilleder

Skærmene nedenfor illustrerer et fuldt konfigurationsforløb.

Cookie-samtykkedialogen, som besøgende ser den
Cookie-samtykkedialogen, som besøgende ser den
Generelt-fanen med bannertekst og cookielevetid
Generelt-fanen med bannertekst og cookielevetid
Udseende-fanen med live-preview
Udseende-fanen med live-preview
Kategorier-fanen med de tre standardgrupper
Kategorier-fanen med de tre standardgrupper
Scriptblokering-fanen med URL-mønstre mappet til kategorier
Scriptblokering-fanen med URL-mønstre mappet til kategorier
Statistik-dashboardet med acceptrater
Statistik-dashboardet med acceptrater

FAQ

Er pluginet GDPR-kompatibelt ud af kassen?

Pluginet leverer alle de tekniske primitiver, der kræves til GDPR-compliance: forudgående samtykke, granulære kategorier, en lige så fremtrædende afvis-knap, nem tilbagetrækning af samtykke og en uomgængelig log. Compliance afhænger af, hvordan du konfigurerer pluginet: du skal stadig registrere hvert tredjepartsscript under Scriptblokering, skrive en præcis privatlivspolitik og linke til den fra banneret.

Dækker det CCPA og andre privacy-love?

Den samme mekanik — granulære kategorier, scriptblokering og en genåbnelig indstillingsdialog — opfylder CCPA’s “Do Not Sell”-krav, UK GDPR, Brasiliens LGPD og de fleste øvrige moderne privacy-love. Til regionsspecifik knaptekst kan du bruge filteret ccm_js_settings sammen med et geolocation-plugin eller læne dig op ad Polyglot til sprogbaseret variation.

Vil det sløve sitet?

Nej. Frontendens runtime er en enkelt vanilla JavaScript-fil (omkring 12 KB minified, ingen jQuery, ingen eksterne afhængigheder), indlæst med defer. Banneret renderes i et enkelt DOM-pass, og der er intet remote-kald under sideindlæsningen.

Virker det sammen med caching-plugins?

Ja. Banneret læser samtykketilstanden fra en first-party cookie og renderer udelukkende på klientsiden, så det er kompatibelt med full page caches (WP Rocket, LiteSpeed Cache, W3 Total Cache, Cloudflare APO). Sørg for, at samtykkecookien ikke fjernes af dit caching-lag.

Hvordan integrerer det med Google Tag Manager?

Der er to støttede mønstre. Det enkleste er at tilføje googletagmanager.com på Scriptblokering-fanen og tildele det Analytiske eller Marketing — GTM selv indlæses ikke, før samtykke gives. Det mere fleksible mønster lader GTM indlæse uden betingelser og spærre enkelte tags inde i GTM ved at bruge eventet ccm:consent-updated som trigger.

Kan jeg oversætte banneret?

Ja. Pluginet er fuldt internationaliseret; text domain er cookie-consent, og .pot-filer ligger i mappen languages. Har du Polyglot installeret, opfanges bannertekster automatisk og oversættes til hvert aktivt sprog. Du kan også overstyre tekst pr. side via filteret ccm_js_settings.

Hvor længe gemmes samtykket?

I det antal dage, du konfigurerer under Generelt → Cookielevetid. Standard er 365 dage. Når cookien udløber, dukker banneret op igen, og den besøgende skal give samtykke på ny.

Gemmer pluginet personoplysninger?

Samtykkeloggen gemmer et SHA-256-hash af den besøgendes IP-adresse (aldrig den rå IP), user agent-strengen, et tidsstempel og de valg, der er foretaget pr. kategori. Hverken navne, mailadresser eller fulde IP-adresser opbevares. Loggen findes for at opfylde GDPR’s krav om at kunne dokumentere, at samtykke er givet.

Kan jeg eksportere samtykkeloggen?

Loggen ligger i en almindelig WordPress-tabel ({wp_prefix}ccm_consents) og kan eksporteres med ethvert databaseværktøj — phpMyAdmin, Adminer, wp db export eller en SQL-klient. En native CSV-eksport fra Statistik-fanen er planlagt til en kommende udgivelse.

Fejlfinding

Banneret vises ikke

Banneret vises kun automatisk, når der ikke ligger en ccm_consent-cookie i den besøgendes browser. Har du allerede accepteret eller afvist ved et tidligere besøg, huskes beslutningen i den konfigurerede cookielevetid — typisk 365 dage — og banneret holder sig skjult. For at teste på en frisk slate: åbn browserens DevTools, slet cookien ccm_consent under Application → Cookies, og genindlæs. Som en ikke-destruktiv alternativ klik på den flydende indstillingsknap (hvis aktiv) og brug Decline all for at få banneret frem ved næste sideskift, eller kald CookieConsent.resetConsent() fra browserkonsollen.

Scripts indlæses stadig efter afvisning

Bekræft, at hvert sporingsscript står under Scriptblokering, og at URL-mønsteret rent faktisk matcher. Inline-scripts indsat af theme eller page builders blokeres også, men kun når deres indhold matcher det konfigurerede mønster. Brug DevTools’ Network-fane til at finde den præcise host for ethvert kald, der slap igennem, og føj den til scriptblokeringstabellen.

Den flydende knap overlapper andre widgets

Slå Vis flydende knap fra under Udseende, og læg i stedet et link <a class="ccm-open-settings">Cookie preferences</a> ind i din footer. Det giver dig fuld kontrol over placeringen.

Statistikken viser nul samtykker

Tællere stiger først, når en besøgende klikker på en bannerknap. Sidevisninger uden interaktion med banneret logges ikke. Ser du nul efter lanceringen, så tjek, at banneret faktisk vises, og at du ikke browser som logget-ind administrator på en side, hvor banneret allerede er afvist.

Bannerteksten oversættes ikke

Polyglot skal være installeret og aktiveret, og målsproget skal være slået til under Polyglot → Indstillinger. Bannerteksterne oversættes ved første kald, efter at et sprog er slået til; besøg en side på det sprog som administrator én gang for at udløse oversættelsen.

Indstillinger nulstilles efter en opdatering

Al admin-konfiguration (bannertekster, kategorier, udseende, oversættelser) bor i den enkelte WordPress-option ccm_settings. Scriptblokeringsmønstre ligger i tabellen {wp_prefix}ccm_blocked_scripts. Ingen af dem røres under plugin-opdateringer. Hvis du ser nulstillinger, så tjek, om et sikkerheds- eller staging-sync-plugin overskriver optioner — det er sjældent selve cookie-pluginet.

Last updated on