DevPress Factory Elegant Popup

Description

Elegant Popup is a lightweight yet powerful popup plugin for WordPress. It lets you create unlimited popups with a minimal, modern aesthetic — no bloat, no page builder lock-in.

Key Features

  • Unlimited popups — create as many as you need, each fully independent
  • 5 content types — Rich Text/HTML, Image (JPG/PNG/WebP), MP4 Video, HLS Streaming (.m3u8), and Embed/iFrame codes
  • Image link — optionally wrap an image with a clickable URL (opens in same tab or new tab)
  • Responsive — separate width/height settings for desktop and mobile using any CSS unit (px, %, vw, vh, rem)
  • Full style control — background color, text color, overlay color (supports rgba), border radius
  • 30+ Google Fonts — choose from a dropdown with live preview, defaults to Titillium Web
  • Flexible triggers — auto-open with configurable delay (ms), or manual via shortcode/button/JS API
  • Auto-close — optional timer with animated progress bar
  • Dismiss options — closable via X button and/or by clicking outside the popup (both configurable)
  • Page targeting — show on all pages or specific pages/posts by ID
  • HLS streaming — live and VOD streaming via hls.js with native fallback
  • 5 languages — Italian, English, Spanish, German, French (switchable from Settings)

Page Builder Integrations

  • Gutenberg — native block “Elegant Popup” in the block inserter (WP 5.0+, no build step required)
  • Elementor — native widget in the General panel with full style controls (padding, typography, colors, border radius)
  • WPBakery Page Builder — native element in the Content Elements picker
  • Classic Visual Composer — supported via vc_map(), backwards compatible
  • Classic Editor — shortcode reference metabox in the post/page sidebar

Shortcode Usage

Basic trigger button:
[elegant_popup id=”1″]

Custom label and CSS class:
[elegant_popup id=”1″ label=”Watch Video” class=”my-class”]

HTML Attribute

Add data-ep-open="ID" to any HTML element:
Open Popup
Watch Now

JavaScript API

ElegantPopup.open(1);   // Open popup with ID 1
ElegantPopup.close(1);  // Close popup with ID 1

Supported Content Types

  • Text / HTML — Full WordPress rich text editor with media upload support
  • Image — JPG, PNG, WebP with optional clickable link
  • MP4 Video — HTML5 video with media library browser
  • HLS Stream — .m3u8 manifests, works with CDN, live streams, and VOD via hls.js
  • Embed / iFrame — YouTube, Vimeo, Google Maps, contact forms, and any iframe code

External services

This plugin connects to the following external services:

Google Fonts (fonts.googleapis.com)

When a popup is displayed on the frontend, this plugin loads the selected Google Font from Google’s servers to render custom typography.
Data sent: the font family name and the visitor’s IP address are transmitted to Google’s servers on each page load where an active popup with a custom font is shown.
* Terms of Service: https://developers.google.com/fonts/faq/privacy
* Privacy Policy: https://policies.google.com/privacy

hls.js CDN (cdn.jsdelivr.net)

When a popup of type “HLS Stream” is used, the plugin loads the hls.js library from the jsDelivr CDN. This is required to play HLS (.m3u8) video streams in browsers without native HLS support.
Data sent: the visitor’s IP address is transmitted to jsDelivr’s servers when the library is loaded.
* Terms of Service: https://www.jsdelivr.com/terms
* Privacy Policy: https://www.jsdelivr.com/privacy-policy-jsdelivr-net

Note: these external connections only occur when a popup with a Google Font or an HLS video stream is displayed. If no such popups are active on a page, no data is transmitted to these services.

Privacy Policy

Elegant Popup does not collect, store, or transmit any personal data from site visitors. No cookies are set by this plugin. No external services are contacted except Google Fonts (loaded from fonts.googleapis.com for font rendering in admin and frontend) and hls.js CDN (loaded from cdn.jsdelivr.net for HLS video streaming support).

If you use HLS streaming or Google Fonts, your visitors’ IP addresses may be processed by Google and jsDelivr respectively, subject to their own privacy policies.

Blocks

This plugin provides 1 block.

  • Elegant Popup Trigger

Installation

  1. Upload the elegant-popup folder to /wp-content/plugins/
  2. Activate the plugin from Plugins Installed Plugins
  3. Navigate to Elegant Popup in the admin menu
  4. Click + Add New to create your first popup

Updating: deactivate the old version, upload the new ZIP via Plugins Add New Upload Plugin, then reactivate. Your popup data is preserved.

FAQ

Does it work without Elementor or WPBakery?

Yes. The plugin works standalone with WordPress’s Classic Editor and Gutenberg. Elementor and WPBakery integrations are optional and activate automatically if those plugins are present.

Can I show a popup only on specific pages?

Yes. In the Page Visibility section of each popup, choose “Specific pages” and enter the post/page IDs separated by commas. You can find a page’s ID in the URL when editing it in wp-admin.

How do I open a popup manually (on button click)?

Set the trigger type to “Manual” and use any of these methods:
* Shortcode: [elegant_popup id="1"]
* HTML attribute: data-ep-open="1" on any element
* JavaScript: ElegantPopup.open(1)

Does it support HLS / live streaming?

Yes. Select the “HLS Stream” content type and paste your .m3u8 manifest URL. The plugin uses hls.js with automatic native HLS fallback for Safari/iOS.

Is the plugin compatible with caching plugins?

Yes. All popup rendering happens server-side in the footer. Popup HTML is included in the page output, so it works correctly with page caching. The trigger JavaScript is loaded asynchronously.

Can I add a link to an image popup?

Yes. When the content type is set to “Image”, an optional Link URL field appears. If filled, the image becomes a clickable link. You can also choose whether it opens in the same tab or a new tab.

How do I change the admin language?

Go to Elegant Popup Settings and select your preferred language from the visual language picker. Available languages: Italian, English, Spanish, German, French.

Will my popups be lost if I deactivate the plugin?

No. Popup data is stored in a dedicated database table and is not deleted on deactivation — only on uninstall (if you choose to remove all data).

Reviews

There are no reviews for this plugin.

Contributors and Developers

“DevPress Factory Elegant Popup” is open source software. The following people have contributed to this plugin.

Contributors

Change Log

2.0.0

  • Added: Elementor widget integration with full style controls
  • Added: Gutenberg native block (no build step required)
  • Added: WPBakery Page Builder / Visual Composer integration
  • Added: Classic Editor sidebar metabox with shortcode reference
  • Added: 5-language support (IT, EN, ES, DE, FR) with in-admin language switcher
  • Added: Image link — optional clickable URL on image popups
  • Added: Separate content collection per type to fix TinyMCE save issues
  • Added: wp_unslash() on all POST data for correct HTML entity handling
  • Added: Auto table creation on plugins_loaded — no re-activation needed after update
  • Added: ensure_table() defensive check before every DB query
  • Fixed: dbDelta() SQL formatting for reliable table creation across all MySQL versions
  • Fixed: PHP 5.6 compatibility — removed all ?? null coalescing operators
  • Fixed: PHP 5.6 compatibility — replaced anonymous functions with explicit loops
  • Fixed: TinyMCE content not saving — removed double-editor conflict
  • Fixed: Image content stored as JSON to support optional link alongside URL
  • Improved: Error feedback on save failure with redirect to edit page

1.0.0

  • Initial release
  • Unlimited popups with text, image, MP4, HLS, and embed content types
  • Desktop and mobile dimension controls
  • Google Fonts selector with live preview
  • Auto-open trigger with delay, manual trigger via shortcode/data attribute/JS
  • Auto-close with animated progress bar
  • Configurable close behavior (X button, overlay click, ESC key)
  • Page visibility rules (all pages or specific page IDs)
  • Full color customization including rgba overlay