lwplugins / lw-cookie
GDPR-compliant cookie consent banner for WordPress
Fund package maintenance!
Requires
- php: >=8.1
- composer/installers: ^2.0
Requires (Dev)
- phpcompatibility/phpcompatibility-wp: ^2.1
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.0
- wp-coding-standards/wpcs: ^3.0
README
GDPR-compliant cookie consent banner for WordPress - minimal footprint, full compliance.
Features
GDPR 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
Cookie Banner
- 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
Script Blocking
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
Content Blocking
Block third-party embeds until consent is given:
- YouTube videos
- Vimeo videos
- Google Maps
- Other iframes
Cookie Scanner
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
Google Consent Mode v2
- 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
Meta Pixel (Facebook) Support
- Automatic
fbq('consent', 'revoke/grant')API calls - Works with existing Facebook Pixel implementations
Third-Party Plugin Integration
- dataLayer.push events for GTM triggers (
lw_cookie_consent_update) - WordPress filters for querying consent state
- Script blocking override filter for plugin compatibility
WP-CLI Support
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 logs
Installation
Via Composer (Recommended)
composer require lwplugins/lw-cookie
Manual Installation
- 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
Configuration
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 |
Cookie Categories
| 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 |
JavaScript API
// 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();
WordPress Hooks (PHP)
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 );
GTM Integration
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' }
Requirements
- PHP 8.1 or higher
- WordPress 6.0 or higher
Documentation
Full documentation is available in the docs folder:
Part of LW Plugins
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 |
License
GPL-2.0-or-later. See LICENSE for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Sponsor
Supported by Sinann
