{"id":341521,"date":"2026-07-21T10:57:18","date_gmt":"2026-07-21T10:57:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wiwi-cookie-consent\/"},"modified":"2026-07-21T10:56:52","modified_gmt":"2026-07-21T10:56:52","slug":"wiwi-cookie-consent","status":"publish","type":"plugin","link":"https:\/\/os.wordpress.org\/plugins\/wiwi-cookie-consent\/","author":18529643,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Wiwi Cookie Consent","header_author":"Naiche","header_description":"A simple, customizable cookie consent banner for GDPR\/AVG compliance.","assets_banners_color":"744645","last_updated":"2026-07-21 10:56:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":41,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"naiches","date":"2026-07-21 10:56:52"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3616954,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3616954,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3616954,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3616954,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3616954,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3616954,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3616954,"resolution":"3","location":"assets","locale":"","width":1425,"height":2788}},"screenshots":{"1":"The cookie banner as shown to visitors.","2":"The preferences modal with per-category toggles.","3":"The Cookie Management admin page."}},"plugin_section":[],"plugin_tags":[49894,20272,16626,131785,396],"plugin_category":[54],"plugin_contributors":[195720],"plugin_business_model":[],"class_list":["post-341521","plugin","type-plugin","status-publish","hentry","plugin_tags-avg","plugin_tags-cookie-banner","plugin_tags-cookie-consent","plugin_tags-gdpr","plugin_tags-privacy","plugin_category-security-and-spam-protection","plugin_contributors-naiches","plugin_committers-naiches"],"banners":{"banner":"https:\/\/ps.w.org\/wiwi-cookie-consent\/assets\/banner-772x250.png?rev=3616954","banner_2x":"https:\/\/ps.w.org\/wiwi-cookie-consent\/assets\/banner-1544x500.png?rev=3616954","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wiwi-cookie-consent\/assets\/icon-128x128.png?rev=3616954","icon_2x":"https:\/\/ps.w.org\/wiwi-cookie-consent\/assets\/icon-256x256.png?rev=3616954","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wiwi-cookie-consent\/assets\/screenshot-1.png?rev=3616954","caption":"The cookie banner as shown to visitors."},{"src":"https:\/\/ps.w.org\/wiwi-cookie-consent\/assets\/screenshot-2.png?rev=3616954","caption":"The preferences modal with per-category toggles."},{"src":"https:\/\/ps.w.org\/wiwi-cookie-consent\/assets\/screenshot-3.png?rev=3616954","caption":"The Cookie Management admin page."}],"raw_content":"<!--section=description-->\n<p>Wiwi Cookie Consent is a small, dev-friendly consent banner. Add your tracking scripts (Google Analytics 4, Meta Pixel, Google Ads, or anything else) through the settings page, and the plugin blocks them from running until a visitor actually consents to that category \u2014 nothing more, nothing less.<\/p>\n\n<p>Built for typical brochure\/marketing sites without visitor accounts or logins \u2014 not for membership sites, and not a full cookie-compliance suite. See \"What it deliberately does not do\" below for the exact boundary.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li>Opt-in by default \u2014 every category starts OFF; nothing tracks until a visitor chooses to allow it.<\/li>\n<li>Real script blocking \u2014 tracking code is wrapped in an inert <code>&lt;template&gt;<\/code> element and only activated after consent, not just hidden with CSS.<\/li>\n<li>Per-category consent \u2014 Marketing, Analytics, and Functional, each independently toggleable in the preferences modal.<\/li>\n<li>Quick-add templates for Google Analytics 4, Meta Pixel, and Google Ads \u2014 enter your ID, done.<\/li>\n<li>Fully accessible \u2014 keyboard navigation, focus trap, ARIA attributes on the preferences modal.<\/li>\n<li>Style it yourself \u2014 an optional toggle disables the plugin's own CSS entirely while keeping every ID and class in place, so you can theme the banner from your own stylesheet.<\/li>\n<li>Dutch and English out of the box.<\/li>\n<\/ul>\n\n<h4>What it deliberately does not do<\/h4>\n\n<ul>\n<li><strong>No consent logging.<\/strong> Nothing about your visitors is stored server-side \u2014 no IP, no timestamp, no consent database. Built for anonymous-visitor sites without accounts\/logins; there's no identified user to tie a server-side consent record to in the first place. See the notice on the plugin's own settings page for the full reasoning.<\/li>\n<li><strong>No validation of how you classify a cookie.<\/strong> You decide which category (Marketing\/Analytics\/Functional) each cookie belongs to, and the plugin blocks\/unblocks it accordingly \u2014 correctly and reliably. It cannot know whether <em>you<\/em> classified it correctly (e.g. labelling an analytics cookie as \"Functional\" to skip consent is a real, commonly-fined mistake). Getting the categories right is your legal responsibility.<\/li>\n<li><strong>No site-wide cookie scanning or auditing.<\/strong> The plugin doesn't crawl your site to discover what cookies exist \u2014 you declare them yourself in the cookie table. Automatic cookie discovery is a fundamentally different (and much heavier) category of tool; see the FAQ.<\/li>\n<li><strong>No scanning or filtering of other plugins, themes, or embedded content.<\/strong> This plugin only gates the tracking code you configure through its own settings \u2014 it will not detect or block a hardcoded script elsewhere on your site, or a YouTube\/Maps\/social-widget embed. Continuously scanning and filtering arbitrary page content would need to watch the DOM on every page (e.g. a <code>MutationObserver<\/code>), which runs against this plugin's zero-front-end-impact design goal. That stays your responsibility \u2014 self-host fonts, use privacy-enhanced embed modes, or click-to-load placeholders.<\/li>\n<li><strong>No Terms, Privacy Policy, or Cookie Policy content.<\/strong> The Banner &amp; Modal Text settings let you <em>link<\/em> to existing WordPress pages for these \u2014 the plugin does not write, generate, or validate their content. You (or your agency) must write and maintain Algemene voorwaarden, Privacybeleid\/Privacyverklaring, and Cookiebeleid yourselves.<\/li>\n<li><strong>No bundled updater, no telemetry, no phone-home.<\/strong> Updates come from the WordPress.org repository like any other plugin.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not connect to any external service on its own. It stores no data off-site, has no telemetry, and phones home to nothing. It is a consent gate, not a tracker.<\/p>\n\n<p>Its purpose, however, is to let a site administrator add their <em>own<\/em> third-party tracking code and have it load only after a visitor consents. A third-party service is contacted <strong>only when both<\/strong> of these are true: (1) the administrator has configured that service (via a built-in quick-add template or by pasting equivalent code), <strong>and<\/strong> (2) a visitor has granted consent to the relevant cookie category. With no configuration, the plugin makes no external requests at all.<\/p>\n\n<p>The services offered by the built-in quick-add templates are:<\/p>\n\n<p><strong>Google Analytics 4 \/ Google Ads (Google Tag \u2014 gtag.js)<\/strong>\nLoaded from <code>https:\/\/www.googletagmanager.com\/gtag\/js<\/code> only when the administrator enters a Google Analytics Measurement ID (Analytics category) or a Google Ads Conversion ID (Marketing category) and the visitor consents to that category. Once loaded, Google's script may set cookies and send the visitor's IP address, page URL, and interaction events to Google to measure site usage and advertising conversions.\nTerms of Service: https:\/\/policies.google.com\/terms \u2014 Privacy Policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<p><strong>Meta Pixel (Facebook)<\/strong>\nLoaded from <code>https:\/\/connect.facebook.net\/en_US\/fbevents.js<\/code> only when the administrator enters a Meta Pixel ID and the visitor consents to the Marketing category. Once loaded, Meta's script may set cookies and send the visitor's IP address, page URL, and events (e.g. PageView) to Meta to measure advertising effectiveness.\nTerms of Service: https:\/\/www.facebook.com\/legal\/terms \u2014 Data Policy: https:\/\/www.facebook.com\/privacy\/policy\/<\/p>\n\n<p>The administrator may also paste any other tracking code of their choosing; in that case the external service contacted is whichever one that code refers to, and disclosing it is the site administrator's responsibility.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>wiwi-cookie-consent<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip via Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin through the Plugins menu in WordPress.<\/li>\n<li>Open the new <strong>Cookies<\/strong> menu in the admin sidebar.<\/li>\n<li>Add your tracking code per category (or use the quick-add templates), customise the banner text, and save.<\/li>\n<\/ol>\n\n<p>Requires PHP 8.0 or higher and WordPress 6.0 or higher.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20store%20or%20log%20what%20visitors%20consented%20to%3F\"><h3>Does this plugin store or log what visitors consented to?<\/h3><\/dt>\n<dd><p>No. There is no server-side consent database. See \"What it deliberately does not do\" above and the notice shown at the top of the plugin's own settings page.<\/p><\/dd>\n<dt id=\"does%20it%20block%20cookies%20from%20other%20plugins%20or%20themes%3F\"><h3>Does it block cookies from other plugins or themes?<\/h3><\/dt>\n<dd><p>No. It only gates tracking code entered through its own settings screen. If you have a tracking script hardcoded in your theme or added by another plugin, route it through Wiwi Cookie Consent's settings if you want it consent-gated, or handle it separately.<\/p><\/dd>\n<dt id=\"does%20it%20check%20whether%20i%27ve%20categorised%20my%20cookies%20correctly%3F\"><h3>Does it check whether I've categorised my cookies correctly?<\/h3><\/dt>\n<dd><p>No. The plugin blocks and unblocks exactly what you tell it to, exactly as configured \u2014 that mechanism is reliable. Whether a given cookie genuinely belongs in Marketing, Analytics, or Functional (and whether \"Functional\" is even the correct exemption for it) is a legal judgement call only you can make. Mislabelling a tracking cookie as \"Functional\" to avoid asking for consent is one of the most common cookie-banner violations regulators actually fine \u2014 the plugin can't catch that for you.<\/p><\/dd>\n<dt id=\"can%20this%20plugin%20scan%20my%20site%20and%20find%20all%20my%20cookies%20for%20me%3F\"><h3>Can this plugin scan my site and find all my cookies for me?<\/h3><\/dt>\n<dd><p>No, and that's intentional. Automatic cookie\/tracker discovery is a genuinely different, much heavier category of tool (the kind built by dedicated consent-management platforms). This plugin stays a lightweight blocker for the tracking code you explicitly configure \u2014 it does not crawl pages, inspect third-party scripts, or maintain its own cookie database.<\/p><\/dd>\n<dt id=\"do%20i%20still%20need%20to%20write%20my%20own%20privacy%20policy%20%2F%20terms%20%2F%20cookie%20policy%3F\"><h3>Do I still need to write my own Privacy Policy \/ Terms \/ Cookie Policy?<\/h3><\/dt>\n<dd><p>Yes, always. The plugin lets you link the banner to existing WordPress pages for Terms &amp; Conditions, Privacy Policy, and Cookie Policy \u2014 it does not write or supply any legal content. That text is your (or your agency's) responsibility.<\/p><\/dd>\n<dt id=\"does%20it%20collect%20any%20data%20or%20phone%20home%3F\"><h3>Does it collect any data or phone home?<\/h3><\/dt>\n<dd><p>No. There is no usage tracking, analytics, telemetry, or licensing call-home.<\/p><\/dd>\n<dt id=\"can%20i%20fully%20restyle%20the%20banner%3F\"><h3>Can I fully restyle the banner?<\/h3><\/dt>\n<dd><p>Yes. Enable \"Don't load the plugin's default stylesheet\" under Styling in the settings page, and style <code>#wcc-cookie-banner<\/code>, <code>#cookie-preferences-modal<\/code>, <code>.wcc-btn<\/code>, <code>.wcc-toggle<\/code>, and the other existing classes\/IDs from your own theme CSS. The banner's show\/hide and open\/close behaviour works independently of the stylesheet.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"A simple, lightweight cookie consent banner for GDPR\/AVG compliance \u2014 no bloat, no phone-home, no consent database.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/341521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=341521"}],"author":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/naiches"}],"wp:attachment":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=341521"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=341521"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=341521"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=341521"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=341521"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=341521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}