Bug Fix
* uninstall.php was missing six options introduced in 1.1.0 — exitpo_show_discount and all five Display Rules settings (exitpo_show_on, exitpo_specific_pages, exitpo_show_to, exitpo_frequency, exitpo_device_target) — these are now properly deleted when the plugin is uninstalled, leaving no orphaned rows in wp_options
New Feature: Display Rules
* Page targeting — all pages, front page, blog/posts, or specific pages/posts
* Audience targeting — everyone, guests only, or members only (logged-in)
* Frequency control — always / once per session / once per day / once per week / once ever (localStorage)
* Device targeting — all devices / desktop only / mobile only
Admin UI Overhaul
* Full-width, screen-adaptive layout — no more wasted blank space
* New gradient header banner with version badge and live status indicator
* Six icon-based navigation tabs (General, Design, Typography, Content, CTA Button, Display Rules)
* All tab content migrated from plain form tables to card-based sections
* Animated CSS toggle switches replace checkboxes for boolean settings
* Visual icon+label option cards replace radio buttons for positional/animation/rule selectors
* Quick Status sidebar widget showing live setting values
* Pro Tips sidebar panel with conversion best-practice hints
* View Site shortcut button in the sidebar
* Full-width responsive layout via a dedicated admin.css stylesheet (replaces scattered inline styles)
Frontend Improvements
* Animation engine updated to properly implement all five effects (fadeIn, slideDown, zoomIn, bounce, none)
* Popup position (top / center / bottom) now applied dynamically by JavaScript
* Overlay opacity is now applied as a CSS custom property from the saved setting
* ESC key support to close the popup
* Frequency check uses sessionStorage (per session) or localStorage with timestamps (daily/weekly/once)
* Device check compares window.innerWidth against 768 px breakpoint before showing popup
* animation, position, frequency, and device_target now passed to frontend via wp_localize_script
Bug Fixes
* exitpo_show_discount was registered but never saved — now properly registered and enforced
* Background overlay opacity was hardcoded in CSS — now reads the saved option value
* CTA toggle in settings panel now uses JavaScript card visibility instead of class toggling on <tr> elements
* Critical — saving settings on any tab was wiping all other tabs’ settings; fixed with a two-level hidden-field strategy: exitpo_hidden_fallback_fields() emits every setting’s current DB value before the tab content so WordPress options.php always receives a value for every registered option; per-tab value=”0″ sentinels placed before each checkbox handle the “unchecked on current tab” case without affecting other tabs
* Critical — toggle switches (Enable Popup, Close Button, Show Discount, Enable CTA) were being turned off when saving from a different tab because the global checkbox fallback incorrectly used value=”0″ instead of the current saved value; corrected so the global fallback preserves the DB state and only the per-tab sentinel can flip a checkbox to off
* Admin page layout made fully responsive and full-width — removed fixed max-width: 1180px cap so the settings page uses all available screen space
* Proper left/right padding added to the settings wrapper so content does not touch screen edges
* Plugin version number is now read dynamically from the file header via EXITPO_VERSION constant (using get_file_data()) — eliminates the hardcoded version string that required manual updates in multiple places
Plugin Website
Visit website
Share Post
Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.