{"id":371032,"date":"2026-09-20T14:01:19","date_gmt":"2026-09-20T14:01:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wonderful-cookie-and-consent-banner\/"},"modified":"2026-09-20T14:01:08","modified_gmt":"2026-09-20T14:01:08","slug":"wonderful-cookie-and-consent-banner","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/wonderful-cookie-and-consent-banner\/","author":23357214,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Wonderful Cookie and Consent Banner","header_author":"Wonderful Plugins","header_description":"A clean, minimal cookie consent banner: bilingual texts, HTML descriptions, and scripts like Matomo or Google Tag Manager that run only after consent.","assets_banners_color":"","last_updated":"2026-09-20 14:01:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wonderfulplugins.eu\/wonderful-cookie-and-consent-banner","header_author_uri":"https:\/\/wonderfulplugins.eu","rating":0,"author_block_rating":0,"active_installs":0,"downloads":38,"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":"wonderfulplugins","date":"2026-09-20 14:01:08","revision":3704320}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3704320,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3704320,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1-de.jpg":{"filename":"screenshot-1-de.jpg","revision":3704320,"resolution":"1","location":"assets","locale":"de","width":2560,"height":1600},"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3704320,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2-de.jpg":{"filename":"screenshot-2-de.jpg","revision":3704320,"resolution":"2","location":"assets","locale":"de","width":2560,"height":1600},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3704320,"resolution":"2","location":"assets","locale":"","width":2560,"height":1600},"screenshot-3-de.jpg":{"filename":"screenshot-3-de.jpg","revision":3704320,"resolution":"3","location":"assets","locale":"de","width":2560,"height":1600},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3704320,"resolution":"3","location":"assets","locale":"","width":2560,"height":1600},"screenshot-4-de.jpg":{"filename":"screenshot-4-de.jpg","revision":3704320,"resolution":"4","location":"assets","locale":"de","width":2560,"height":1800},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3704320,"resolution":"4","location":"assets","locale":"","width":2560,"height":1800},"screenshot-5-de.jpg":{"filename":"screenshot-5-de.jpg","revision":3704320,"resolution":"5","location":"assets","locale":"de","width":2560,"height":2000},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3704320,"resolution":"5","location":"assets","locale":"","width":2560,"height":2000},"screenshot-6-de.jpg":{"filename":"screenshot-6-de.jpg","revision":3704320,"resolution":"6","location":"assets","locale":"de","width":2560,"height":1800},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3704320,"resolution":"6","location":"assets","locale":"","width":2560,"height":1800}},"screenshots":{"1":"The banner: accept all or choose individually. Position, size, colors and texts are yours.","2":"Choose individually: categories with their services and cookies, nothing optional preselected.","3":"A blocked YouTube video: the placeholder explains, \"Load content\" loads it once, the checkbox allows the category for good.","4":"Settings, Appearance: position grid, size, backdrop, button order, colors. Three preview buttons render the current form without saving.","5":"Settings, Scripts and services: twelve presets, the account ID as a field of its own, per-language name and description, the script that runs after consent, cookies, and an \"Active\" switch that parks a service without deleting it.","6":"Settings, Texts: every text in one column per language, HTML where it helps."}},"plugin_section":[],"plugin_tags":[20272,16626,131785,23294,1610],"plugin_category":[56],"plugin_contributors":[247385],"plugin_business_model":[],"class_list":["post-371032","plugin","type-plugin","status-publish","hentry","plugin_tags-cookie-banner","plugin_tags-cookie-consent","plugin_tags-gdpr","plugin_tags-google-tag-manager","plugin_tags-youtube","plugin_category-social-and-sharing","plugin_contributors-wonderfulplugins","plugin_committers-wonderfulplugins"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wonderful-cookie-and-consent-banner\/assets\/icon-128x128.png?rev=3704320","icon_2x":"https:\/\/ps.w.org\/wonderful-cookie-and-consent-banner\/assets\/icon-256x256.png?rev=3704320","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wonderful-cookie-and-consent-banner\/assets\/screenshot-1.jpg?rev=3704320","caption":"The banner: accept all or choose individually. Position, size, colors and texts are yours."},{"src":"https:\/\/ps.w.org\/wonderful-cookie-and-consent-banner\/assets\/screenshot-2.jpg?rev=3704320","caption":"Choose individually: categories with their services and cookies, nothing optional preselected."},{"src":"https:\/\/ps.w.org\/wonderful-cookie-and-consent-banner\/assets\/screenshot-3.jpg?rev=3704320","caption":"A blocked YouTube video: the placeholder explains, \"Load content\" loads it once, the checkbox allows the category for good."},{"src":"https:\/\/ps.w.org\/wonderful-cookie-and-consent-banner\/assets\/screenshot-4.jpg?rev=3704320","caption":"Settings, Appearance: position grid, size, backdrop, button order, colors. Three preview buttons render the current form without saving."},{"src":"https:\/\/ps.w.org\/wonderful-cookie-and-consent-banner\/assets\/screenshot-5.jpg?rev=3704320","caption":"Settings, Scripts and services: twelve presets, the account ID as a field of its own, per-language name and description, the script that runs after consent, cookies, and an \"Active\" switch that parks a service without deleting it."},{"src":"https:\/\/ps.w.org\/wonderful-cookie-and-consent-banner\/assets\/screenshot-6.jpg?rev=3704320","caption":"Settings, Texts: every text in one column per language, HTML where it helps."}],"raw_content":"<!--section=description-->\n<p>Most consent plugins are huge. Wonderful Cookie and Consent Banner does two things: it asks the visitor once and remembers the answer in a first-party cookie, and it holds back your tracking scripts and embedded videos or maps until the visitor accepts their category. Four categories \u2014 essential, statistics, marketing, external media \u2014 and that is all you need for a normal website.<\/p>\n\n<p><strong>Everything stays on your own server.<\/strong> The plugin contacts no external service, loads no remote fonts or scripts of its own, keeps no consent log, and sends nothing anywhere. The only third-party requests are the ones <em>you<\/em> configure as services, and those run only after consent.<\/p>\n\n<h4>Scripts that wait for consent<\/h4>\n\n<p>A service is a name, a short description, a category and the script exactly as the provider gave it to you. Paste it, save, done. Presets do the snippet for the usual suspects \u2014 you only fill in the account ID, in a field of its own, and the script is rebuilt from it every time you save. So the container ID stays where you can read and change it instead of being buried in minified provider code. \"Detach preset\" hands the script back for free editing whenever you want it:<\/p>\n\n<ul>\n<li>Matomo (self-hosted)<\/li>\n<li>Google Tag Manager<\/li>\n<li>Google Analytics 4<\/li>\n<li>Google Ads<\/li>\n<li>Meta Pixel<\/li>\n<li>Microsoft Advertising (UET)<\/li>\n<li>LinkedIn Insight Tag<\/li>\n<li>Microsoft Clarity<\/li>\n<\/ul>\n\n<p>Every service can list the cookies it sets (with <code>*<\/code> as wildcard). They are shown to the visitor under \"choose individually\" and deleted when consent is withdrawn.<\/p>\n\n<p>Every service has an \"Active\" switch. Switch it off and it keeps all its settings but stops running: no script, no entry in the banner, no blocked embeds \u2014 handy to take a tracker off the site for a while without deleting it and typing it in again later.<\/p>\n\n<p>Embed blocking is folded away under \"Block embedded content\" and only opens by itself where hosts are configured, so a plain script service is not asked about iframes it will never have.<\/p>\n\n<p>Adding a new optional service \u2014 or switching one back on \u2014 automatically raises the consent version, so every visitor is asked again.<\/p>\n\n<h4>Embedded content that waits too<\/h4>\n\n<p>A service can also block embedded content: give it the hosts it comes from (<code>youtube.com, youtube-nocookie.com<\/code>, or with a path such as <code>google.com\/maps<\/code> so the reCAPTCHA iframe is left alone) and every matching iframe in your content stays empty behind a placeholder until the visitor loads it once or allows the category for good. No request reaches the provider before that \u2014 not even for a thumbnail. Presets for YouTube, Vimeo, Google Maps and OpenStreetMap come with the host lists; the placeholder texts are yours to edit per language, and each service can have its own placeholder image.<\/p>\n\n<p>It works with whatever put the iframe there: the block editor, the classic editor, oEmbed, Divi, Elementor, widgets. The server only removes the <code>src<\/code> attribute from matching iframes in the content; the browser builds the placeholder and puts the source back after consent, and also catches iframes that scripts add later. Players loaded purely through a provider's JavaScript API are not covered.<\/p>\n\n<h4>Texts in as many languages as you need<\/h4>\n\n<p>Enter language codes such as <code>de, en<\/code> and every text gets one column per language. The banner picks the language of the page \u2014 the site language, WPML and Polylang all work, and a filter lets you override it. English and German defaults are built in. The description and the category descriptions may contain HTML, so a link to your privacy policy is one <code>&lt;a&gt;<\/code> away; <code>{privacy}<\/code> and <code>{imprint}<\/code> become the links to the pages you chose.<\/p>\n\n<h4>Looks like your site, not like a plugin<\/h4>\n\n<p>Position on a three-by-three grid (top, middle, bottom \u00d7 left, center, right), size (card, wide, or a bar across the full width), an optional backdrop that dims the page, four colors, one corner radius, and the order of the two buttons. Fonts are inherited from your theme. The floating button that lets visitors change their mind later has its own background and icon color (unobtrusive by default), four built-in icons or an image of your own \u2014 or is switched off, if you prefer a link in the footer (<code>[wonderful_cookie_and_consent_banner_link]<\/code> or any link to <code>#wonderful-cookie-and-consent-banner<\/code>). <code>[wonderful_cookie_and_consent_banner_status]<\/code> on the privacy page shows the current choice per category; the banner stays closed there so the policy can be read before deciding.<\/p>\n\n<h4>Preview without saving<\/h4>\n\n<p>The settings page renders the banner with whatever is currently in the form. Change a color, click \"Preview banner\", look, adjust, save when it is right. The preview writes no cookie and loads no script.<\/p>\n\n<h4>Deliberately no \"only essential\" button<\/h4>\n\n<p>The banner offers \"Accept all\" and \"Choose individually\". Under \"choose individually\" nothing optional is preselected, and saving without ticking anything means essential only. Whether that is enough for your jurisdiction is your call \u2014 the plugin does not give legal advice.<\/p>\n\n<h4>Built-in safety rails<\/h4>\n\n<ul>\n<li>Scripts can only be stored by users who may publish unfiltered HTML (administrators); anyone else keeps what is already saved.<\/li>\n<li>Every text passes through WordPress' HTML sanitiser, every color, number and choice is validated before it is stored.<\/li>\n<li>The consent cookie is validated on every read; anything malformed counts as \"no consent\".<\/li>\n<li>The served HTML is identical for every visitor, so page caches and CDNs never serve a wrong consent state.<\/li>\n<li>Keyboard operable, focus stays inside the dialog, <code>aria<\/code> roles and labels are in place, animations respect \"reduce motion\".<\/li>\n<\/ul>\n\n<h4>For developers<\/h4>\n\n<p>JavaScript: <code>wonderfulCookieAndConsentBanner.has('statistics')<\/code>, <code>.get()<\/code>, <code>.consentId()<\/code>, <code>.open()<\/code>, <code>.acceptAll()<\/code>, <code>.reset()<\/code>. Events on <code>document<\/code>: <code>wonderful-cookie-and-consent-banner-consent<\/code> (on every page load with a stored decision and after every new decision; detail: categories, id, string, source), <code>-changed<\/code> (new decision only) and <code>-loaded<\/code> (a service script ran). The same <code>wonderful_cookie_and_consent_banner_consent<\/code> event is pushed to the <code>dataLayer<\/code> with the same payload, so one Google Tag Manager trigger covers every page.<\/p>\n\n<p>Every decision gets a consent id (<code>&lt;client&gt;-&lt;timestamp&gt;-&lt;version&gt;-&lt;random&gt;<\/code>); the client part stays stable when the visitor changes their mind. Send it along with your analytics events if you want a record of consent \u2014 the plugin itself keeps no log.<\/p>\n\n<p>PHP: <code>wonderful_cookie_and_consent_banner_has( 'marketing' )<\/code> reads the request cookie (mind page caching). Filter <code>wonderful_cookie_and_consent_banner_language<\/code> overrides the language.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The plugin itself contacts no external service: it loads no remote fonts, scripts or images of its own, sends nothing to the plugin author or anyone else, and keeps no consent log. The visitor's decision is stored only in the visitor's own browser, in a first-party cookie named <code>wonderful_cookie_and_consent_banner<\/code>.<\/p>\n\n<p>External services are contacted only for services the site owner configures, and only after the visitor has consented to that service's category. A fresh installation has no service configured and therefore contacts nothing at all. Services placed in the \"essential\" category run without consent, so that category should hold only what is strictly necessary.<\/p>\n\n<p>Every service below is an optional template (\"preset\") that a site owner may add. What is sent is in each case the same kind of data: requesting the provider's script or iframe transmits the visitor's IP address, browser and operating system information, the referring page and any cookies that provider has already set in that browser; what is collected from then on is determined by the provider and by the account the site owner configured. When it is sent differs:<\/p>\n\n<ul>\n<li>Script services: the provider's script is requested on every page view, as soon as the visitor has consented to the service's category, and then runs on its own.<\/li>\n<li>Embed services (videos, maps): nothing is requested from the provider until the visitor clicks \"Load content\" on the placeholder, or has consented to the category \u2014 not even a preview image.<\/li>\n<\/ul>\n\n<h4>Matomo (script, self-hosted)<\/h4>\n\n<p>Website analytics. Loads <code>matomo.js<\/code> from the Matomo installation URL the site owner enters and sends page views to <code>matomo.php<\/code> there, after consent. That URL is usually the site owner's own server, in which case no third party is involved and the site owner's own privacy policy applies. If a hosted Matomo installation is used, its operator's terms apply.\nProvider of the software: InnoCraft Ltd.\nTerms of service: https:\/\/matomo.org\/terms\/\nPrivacy policy: https:\/\/matomo.org\/privacy-policy\/<\/p>\n\n<h4>Google Tag Manager (script)<\/h4>\n\n<p>Tag management. Loads <code>gtm.js<\/code> from <code>www.googletagmanager.com<\/code> on every page view after consent. Which further tags are then loaded, and what they collect, is configured by the site owner in their own Google Tag Manager container.\nProvider: Google Ireland Limited.\nTerms of service: https:\/\/marketingplatform.google.com\/about\/analytics\/tag-manager\/use-policy\/\nPrivacy policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<h4>Google Analytics 4 (script)<\/h4>\n\n<p>Website analytics. Loads <code>gtag.js<\/code> from <code>www.googletagmanager.com<\/code> on every page view after consent and sends page views and events to Google's servers, where they are attributed to the measurement ID the site owner entered. Sets the cookies <code>_ga*<\/code> and <code>_gid<\/code>.\nProvider: Google Ireland Limited.\nTerms of service: https:\/\/marketingplatform.google.com\/about\/analytics\/terms\/us\/\nPrivacy policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<h4>Google Ads (script)<\/h4>\n\n<p>Conversion measurement and remarketing. Loads <code>gtag.js<\/code> from <code>www.googletagmanager.com<\/code> on every page view after consent and reports page views and conversions to the conversion ID the site owner entered. Sets the cookies <code>_gcl_*<\/code>.\nProvider: Google Ireland Limited.\nTerms of service: https:\/\/policies.google.com\/terms \u2014 advertising specifics: https:\/\/business.safety.google\/adsservices\/\nPrivacy policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<h4>Meta Pixel (script)<\/h4>\n\n<p>Conversion measurement and remarketing for Facebook and Instagram advertising. Loads <code>fbevents.js<\/code> from <code>connect.facebook.net<\/code> on every page view after consent and reports a page view to Meta for the pixel ID the site owner entered. Sets the cookies <code>_fbp<\/code> and <code>_fbc<\/code>.\nProvider: Meta Platforms Ireland Limited.\nTerms of service: https:\/\/www.facebook.com\/legal\/terms\/businesstools\nPrivacy policy: https:\/\/www.facebook.com\/privacy\/policy\/<\/p>\n\n<h4>Microsoft Advertising, UET tag (script)<\/h4>\n\n<p>Conversion measurement and remarketing for Bing advertising. Loads <code>bat.js<\/code> from <code>bat.bing.com<\/code> on every page view after consent and reports page views and conversions to Microsoft for the UET tag ID the site owner entered. Sets the cookies <code>_uet*<\/code> and <code>MUID<\/code>.\nProvider: Microsoft Corporation. For the site owner's advertising account the Microsoft Advertising Agreement applies in addition.\nTerms of service: https:\/\/www.microsoft.com\/en-us\/servicesagreement\nPrivacy policy: https:\/\/privacy.microsoft.com\/privacystatement<\/p>\n\n<h4>Microsoft Clarity (script)<\/h4>\n\n<p>Session analytics (heatmaps, session recordings). Loads the Clarity tag from <code>www.clarity.ms<\/code> on every page view after consent; the tag records interactions with the page (mouse movement, clicks, scrolling, page content) and sends them to Microsoft for the project ID the site owner entered. Sets the cookies <code>_clck<\/code>, <code>_clsk<\/code>, <code>CLID<\/code> and <code>MUID<\/code>.\nProvider: Microsoft Corporation.\nTerms of service: https:\/\/clarity.microsoft.com\/terms\nPrivacy policy: https:\/\/privacy.microsoft.com\/privacystatement<\/p>\n\n<h4>LinkedIn Insight Tag (script)<\/h4>\n\n<p>Conversion measurement and remarketing for LinkedIn advertising. Loads <code>insight.min.js<\/code> from <code>snap.licdn.com<\/code> on every page view after consent and reports the page view to LinkedIn for the partner ID the site owner entered. Sets the cookies <code>li_*<\/code>, <code>lidc<\/code>, <code>bcookie<\/code>, <code>UserMatchHistory<\/code> and <code>AnalyticsSyncHistory<\/code>.\nProvider: LinkedIn Ireland Unlimited Company.\nTerms of service: https:\/\/www.linkedin.com\/legal\/user-agreement\nPrivacy policy: https:\/\/www.linkedin.com\/legal\/privacy-policy<\/p>\n\n<h4>YouTube (embed)<\/h4>\n\n<p>Video embeds. This preset loads no script; it holds iframes from <code>youtube.com<\/code> and <code>youtube-nocookie.com<\/code> back behind a placeholder. Only when the visitor loads the video, or has consented to the category, is the player requested from YouTube, which may set cookies.\nProvider: Google Ireland Limited.\nTerms of service: https:\/\/www.youtube.com\/t\/terms\nPrivacy policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<h4>Vimeo (embed)<\/h4>\n\n<p>Video embeds. Holds iframes from <code>vimeo.com<\/code> back until the visitor loads the video or has consented to the category; the player is then requested from Vimeo and may set the cookie <code>vuid<\/code>.\nProvider: Vimeo.com, Inc.\nTerms of service: https:\/\/vimeo.com\/terms\nPrivacy policy: https:\/\/vimeo.com\/privacy<\/p>\n\n<h4>Google Maps (embed)<\/h4>\n\n<p>Map embeds. Holds iframes from <code>google.com\/maps<\/code>, <code>maps.google.com<\/code> and <code>maps.googleapis.com<\/code> back until the visitor loads the map or has consented to the category; the map is then requested from Google and may set cookies.\nProvider: Google Ireland Limited.\nTerms of service: https:\/\/www.google.com\/help\/terms_maps\/\nPrivacy policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<h4>OpenStreetMap (embed)<\/h4>\n\n<p>Map embeds. Holds iframes from <code>openstreetmap.org<\/code> back until the visitor loads the map or has consented to the category; the map is then requested from OpenStreetMap.\nProvider: OpenStreetMap Foundation.\nTerms of service: https:\/\/wiki.osmfoundation.org\/wiki\/Terms_of_Use\nPrivacy policy: https:\/\/wiki.osmfoundation.org\/wiki\/Privacy_Policy<\/p>\n\n<h4>Custom services<\/h4>\n\n<p>The site owner can also paste any other script, and enter any other host whose iframes should be blocked. Such a service is not part of this plugin: which service is contacted, what data it receives and whose terms and privacy policy apply is determined entirely by the site owner who adds it, and must be documented in that site's own privacy policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via <em>Plugins \u2192 Add New \u2192 Upload Plugin<\/em>, or unzip it into <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate <strong>Wonderful Cookie and Consent Banner<\/strong>.<\/li>\n<li>Open <em>Settings \u2192 Consent Banner<\/em>. Check the languages, pick your privacy policy page, adjust the colors to your theme.<\/li>\n<li>Add your services: click a preset, enter the account ID, or paste a custom script. For videos and maps click the YouTube, Vimeo, Google Maps or OpenStreetMap preset. Assign the category.<\/li>\n<li>Click \"Preview banner\" to check the result, then save.<\/li>\n<li>Optional: put <code>[wonderful_cookie_and_consent_banner_status]<\/code> on your privacy page \u2014 it shows the visitor's current choice per category with a button to change it, and the banner stays closed on that page so the policy can be read first. <code>[wonderful_cookie_and_consent_banner_link]<\/code> renders just a link, for example for the footer.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20make%20my%20site%20gdpr%20compliant%3F\"><h3>Does the plugin make my site GDPR compliant?<\/h3><\/dt>\n<dd><p>No plugin can. It gives you the technical part: nothing optional runs before consent, the visitor can choose per category and withdraw later, and the texts are yours to write. Whether your texts, categories and the missing \"only essential\" button meet the rules that apply to you is a legal question.<\/p><\/dd>\n<dt id=\"where%20is%20the%20consent%20stored%3F\"><h3>Where is the consent stored?<\/h3><\/dt>\n<dd><p>In a first-party cookie called <code>wonderful_cookie_and_consent_banner<\/code> in the visitor's browser, for the number of days you configure. Nothing is stored on the server, there is no consent log.<\/p><\/dd>\n<dt id=\"how%20do%20i%20ask%20everyone%20again%3F\"><h3>How do I ask everyone again?<\/h3><\/dt>\n<dd><p>Raise the consent version. This happens automatically when you add a new optional service.<\/p><\/dd>\n<dt id=\"i%20am%20logged%20in%20and%20do%20not%20see%20the%20banner\"><h3>I am logged in and do not see the banner<\/h3><\/dt>\n<dd><p>By default the banner is hidden for logged-in users, so editing the site is not interrupted; it never loads in the admin area, the Customizer, the Divi Visual Builder or the Elementor editor. Switch off \"Hide for logged-in users\" or use the preview on the settings page. Developers can veto loading with the <code>wonderful_cookie_and_consent_banner_should_load<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20it%20block%20youtube%20or%20google%20maps%20embeds%3F\"><h3>Does it block YouTube or Google Maps embeds?<\/h3><\/dt>\n<dd><p>Yes. Add the YouTube (or Vimeo, Google Maps, OpenStreetMap) preset, or give any service the hosts its iframes come from. Matching iframes in your content are held back behind a placeholder until the visitor loads them once or allows the \"external media\" category. Embeds that a provider's JavaScript API builds without an iframe in the content are not covered.<\/p><\/dd>\n<dt id=\"which%20language%20does%20the%20visitor%20see%3F\"><h3>Which language does the visitor see?<\/h3><\/dt>\n<dd><p>The language of the page. WordPress' locale (including WPML and Polylang) is matched against the languages you configured; <code>de_AT<\/code> finds <code>de<\/code>, <code>pt_BR<\/code> finds <code>pt-br<\/code> or <code>pt<\/code>. If nothing matches, the first configured language is used. The filter <code>wonderful_cookie_and_consent_banner_language<\/code> can override this.<\/p><\/dd>\n<dt id=\"can%20i%20use%20google%20consent%20mode%3F\"><h3>Can I use Google Consent Mode?<\/h3><\/dt>\n<dd><p>Set up the consent defaults in your own Google Tag Manager container and use the <code>wonderful_cookie_and_consent_banner_update<\/code> dataLayer event to send the update. The plugin deliberately does not ship Google-specific code.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20uninstall%3F\"><h3>What happens on uninstall?<\/h3><\/dt>\n<dd><p>The single option is deleted. Visitor cookies live in their browsers and expire on their own.<\/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 clean, minimal cookie consent banner: bilingual texts, HTML descriptions, and scripts like Matomo or Google Tag Manager that run only after consent.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/371032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=371032"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wonderfulplugins"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=371032"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=371032"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=371032"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=371032"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=371032"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=371032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}