GDPR-compliant cookie consent banner for WordPress - minimal footprint, full compliance.
- Opt-in by default - All optional categories are OFF until user consents
- Granular category selection - Necessary, Functional, Analytics, Marketing
- Consent logging - Timestamp and policy version for compliance proof
- Policy version tracking - Automatic re-consent on policy changes
- Anonymized IP logging - GDPR-compliant data storage
- Customizable position (top, bottom, modal)
- Customizable layout (full-width bar, floating box)
- Customizable colors and border radius
- Accept All / Reject All / Customize buttons
- Floating button for easy access to preferences
Automatic blocking of known tracking scripts until consent:
- Google Analytics / Google Tag Manager
- Facebook Pixel
- Hotjar
- LinkedIn Insight Tag
- Twitter/X Pixel
- TikTok Pixel
- Microsoft Clarity
- Pinterest Tag
- Snapchat Pixel
Block third-party embeds until consent is given:
- YouTube videos
- Vimeo videos
- Google Maps
- Other iframes
Detect cookies on your website:
- Server-side scanning (detects HttpOnly cookies)
- Deep scan with remote headless browser
- Cookie Database API integration (2000+ known cookies)
- Automatic cookie enrichment with provider, purpose, duration
- Built-in support for Google Consent Mode v2
- Loads at highest priority (before any tracking script)
- EEA region-specific defaults
- Required for Google Ads and Analytics in the EU
- Automatic consent signal updates
- Automatic
fbq('consent', 'revoke/grant')API calls - Works with existing Facebook Pixel implementations
- dataLayer.push events for GTM triggers (
lw_cookie_consent_update) - WordPress filters for querying consent state
- Script blocking override filter for plugin compatibility
Full command-line management:
wp lw-cookie settings list # List all settings
wp lw-cookie settings set enabled true # Change settings
wp lw-cookie stats # View consent statistics
wp lw-cookie export --format=csv # Export consent logs
wp lw-cookie clear-logs --older-than=365 # Clean up old logscomposer require lwplugins/lw-cookie- Download the latest release
- Upload the
lw-cookiefolder to/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu
- Go to LW Plugins → Cookie to configure
Navigate to LW Plugins → Cookie in your WordPress admin to access settings:
| Tab | Description |
|---|---|
| General | Enable/disable, privacy policy page, policy version |
| Appearance | Position, layout, colors, border radius |
| Categories | Customize category names and descriptions |
| Texts | Banner title, message, and button labels |
| Advanced | Consent duration, script blocking, Google Consent Mode |
| Category | Required | Description |
|---|---|---|
| Necessary | Yes | Essential cookies for website function |
| Functional | No | Enhanced functionality and personalization |
| Analytics | No | Visitor analytics and statistics |
| Marketing | No | Advertising and remarketing |
// Accept all cookies
LWCookie.acceptAll();
// Reject all optional cookies
LWCookie.rejectAll();
// Open preferences modal
LWCookie.openPreferences();
// Get current consent state
const consent = LWCookie.getConsent();
// { necessary: true, functional: false, analytics: false, marketing: false }
// Check if category is allowed
if (LWCookie.isAllowed('analytics')) {
// Load analytics scripts
}
// Listen for consent changes
window.addEventListener('lwCookieConsent', function(e) {
console.log('Categories:', e.detail.categories);
console.log('Action:', e.detail.action);
});
// Delete all cookies (for "forget me" functionality)
LWCookie.deleteAllCookies();For third-party plugin integration:
// Get all consent categories
$categories = apply_filters( 'lw_cookie_consent_categories', [] );
// ['necessary' => true, 'functional' => false, 'analytics' => true, 'marketing' => false]
// Check if user has given any consent
$has_consent = apply_filters( 'lw_cookie_has_consent', false );
// Check if specific category is allowed
$analytics_ok = apply_filters( 'lw_cookie_is_category_allowed', false, 'analytics' );
// Prevent blocking specific scripts (e.g., if your plugin handles consent)
add_filter( 'lw_cookie_should_block_script', function( $should_block, $handle, $src, $category ) {
if ( $handle === 'my-plugin-pixel' ) {
return false; // Don't block, I handle consent myself
}
return $should_block;
}, 10, 4 );The plugin pushes events to dataLayer for GTM triggers:
// Fired on every consent change
{
event: 'lw_cookie_consent_update',
lw_cookie_consent: {
necessary: true,
functional: true,
analytics: true,
marketing: false
},
lw_cookie_action: 'customize' // or 'accept_all', 'reject_all'
}- PHP 8.1 or higher
- WordPress 6.0 or higher
Full documentation is available in the docs folder:
LW Cookie is part of the LW Plugins family - lightweight WordPress plugins with minimal footprint and maximum impact.
| Plugin | Description |
|---|---|
| LW SEO | Essential SEO features without the bloat |
| LW Disable | Disable WordPress features like comments |
| LW Site Manager | Site maintenance via AI/REST |
| LW Memberships | Lightweight membership system |
| LW LMS | Courses, lessons, and progress tracking |
| LW Cookie | GDPR-compliant cookie consent |
GPL-2.0-or-later. See LICENSE for details.
Contributions are welcome! Please feel free to submit a Pull Request.
Supported by Sinann
