Àpèjúwe
BannerMonster lets you create custom banners and popups for your WordPress site with advanced targeting rules.
Types:
- Top banner (fixed bar at top)
- Bottom banner (fixed bar at bottom)
- Center popup
- Bottom-right popup
- Bottom-left popup
Display rules:
- All pages
- All posts
- All custom post types
- Specific pages, posts or CPTs
- Specific URLs (partial match, case-insensitive, trailing-slash tolerant)
- Taxonomies (categories, tags, custom taxonomies)
Triggers:
- Immediate
- After X seconds
- Exit intent (mouse leaves viewport)
- At X% page scroll
Reappearance control:
- Set how many minutes after closing a banner should reappear
- 0 = never reappear after closing
- Close state stored in browser localStorage, persists across sessions
Customization:
- Background, text and border colors with color pickers
- Padding, font size, border width
- Width (%) and max-width (px) for popups
- Custom CSS classes per banner
- Close button with configurable persistence
- Overlay for popups with optional close-on-click
Accessibility (WCAG 2.2):
- Native HTML
<dialog>element for popups — focus trap, Escape key, backdrop managed by the browser role="dialog"andaria-modal="true"applied automaticallyaria-labelon each dialog using the banner title- Keyboard-only navigation: Escape to close, Tab cycling trapped inside popup
- Backdrop click closes popup (configurable)
:focus-visiblestyling for keyboard users- Screen reader compatible (VoiceOver, NVDA, JAWS)
Debug mode:
- Append ?bannermonster_debug=1 to any URL to bypass localStorage persistence
- Banner appears on every page load regardless of close state
Zero dependencies on the frontend. jQuery is only used in the admin area.
Performance:
- Frontend assets loaded only when active banners exist on the page
- Vanilla JavaScript, no frameworks
- WordPress object cache for database queries
- Admin assets loaded only on BannerMonster screens
Àwọn àwòrán ìbòjú




Ìgbéwọlẹ̀
- Upload the
bannermonsterfolder to/wp-content/plugins/ - Activate the plugin through the Plugins menu in WordPress
- Go to the BannerMonster menu in your dashboard
- Create your first banner or popup
FAQ
-
Does the plugin load any external scripts?
-
No. The frontend uses vanilla JavaScript with zero dependencies. No Google Fonts, no analytics, no tracking, no CDN-loaded libraries. jQuery is never loaded on the public side.
-
When a visitor closes a banner or popup, the plugin stores the ID and timestamp in the browserÌtumọ̀ Yorùbá: ’s localStorage. On subsequent page views, BannerMonster checks this and skips banners still within the configured reappear period. The data stays entirely in the visitorÌtumọ̀ Yorùbá: ’s browser.
-
How does the reappear control work?
-
In the Trigger metabox, set “Ricompari dopo (min)” to the number of minutes after which the banner should show again. Set to 0 to never show again after closing. The close state is stored locally in the browser with a timestamp, so it persists across page views and sessions.
-
Yes. In the display rules you can choose from: all pages, all posts, all CPTs, specific pages, specific posts, specific CPTs, specific URLs, or specific taxonomy terms. URL matching is flexible: enter a full URL or just a path, and BannerMonster handles trailing slashes, case differences and protocol variations.
-
How does debug mode work?
-
Add ?bannermonster_debug=1 to any URL on your site. When this parameter is present, all banners appear on every page load regardless of localStorage state. Useful during development and testing. A notice appears in the admin metabox when debug mode is active.
-
Does it work with page builders like Elementor, Divi or WPBakery?
-
Yes. BannerMonster uses high-specificity CSS selectors with !important declarations to ensure your banner styles are applied regardless of what your theme or page builder does.
-
Can I use custom CSS classes?
-
Yes. Each banner has a CSS Class field for adding custom CSS classes that are applied to the banner container.
-
Does it conflict with caching plugins?
-
No. BannerMonster uses standard WordPress hooks. The banner HTML is rendered in the footer, and JavaScript handles visibility based on localStorage. Page caching plugins work normally.
-
There is no limit. BannerMonster uses a custom post type. The plugin loads up to 50 active banners per page view.
-
Does it support WooCommerce product categories?
-
Yes. If your WooCommerce product categories are registered as a public taxonomy, you can target banners to specific product categories using the taxonomy display rule.
-
Is the plugin translation-ready?
-
Yes. All user-facing strings use WordPress translation functions with the ‘bannermonster’ text domain.
Àwọn àgbéyẹ̀wò
Kò sí àwọn àgbéyẹ̀wò fún plugin yìí.
Àwọn Olùkópa & Olùgbéejáde
“BannerMonster” jẹ́ ètò ìṣàmúlò orísun ṣíṣí sílẹ̀. Àwọn ènìyàn wọ̀nyí ti ṣe ìkópa sí plugin yìí.
Àwọn OlùkópaTúmọ̀ “BannerMonster” sí èdè rẹ.
Ṣe o nífẹ̀ẹ́ sí ìdàgbàsókè?
Ṣàwárí koodu, ṣàyẹ̀wò ibi ìpamọ́ SVN, tàbí ṣe àgbékalẹ̀ sí àkọsílẹ̀ ìdàgbàsókè nípasẹ̀ RSS.
Àkọsílẹ̀ àwọn àyípadà
1.6.0
- Removed custom CSS field to comply with WordPress.org plugin guidelines.
- Renamed all internal prefixes from
bmtobannermonsterfor unique naming compliance. - Post type renamed from
bm_bannertobannermonster_banner. - All meta keys, options, cache keys and JS variables now use
bannermonster_prefix. - Debug parameter renamed from
?bm_debug=1to?bannermonster_debug=1. - localStorage key renamed from
bm_closedtobannermonster_closed. - Enqueue handles renamed to
bannermonster-frontandbannermonster-admin. - CSS classes renamed from
bm-*tobannermonster-*.
1.5.0
- Migrated popups and banners from
<div>to native HTML<dialog>element. - Full WCAG 2.2 compliance: focus trap, Escape key, backdrop click, aria-label.
- Removed manual overlay DOM element — now using
::backdroppseudo-element. - Removed
show(),hide(),bindEvents()JavaScript functions. - Added
setupBackdropClose()for native dialog close and cancel events. - Added
isModal()helper for popup detection. - Simplified CSS: removed
.bm-overlay,.bm-wrap,.bm-visibleselectors. - Reduced frontend JS from ~169 to ~189 lines (net ~20 more, but removed 3 functions).
- Reduced frontend CSS from 157 to 176 lines.
- Removed
data-overlayanddata-closedata attributes. - Added
backdrop_closeto localized script data. - Close button now wrapped in
<form method="dialog">for native close behavior. - Banners use
openattribute; popups useshowModal()for focus trap.
1.0.0
- Initial release.
