{"id":231888,"date":"2025-05-09T20:54:25","date_gmt":"2025-05-09T20:54:25","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/emberly-popups\/"},"modified":"2025-07-27T19:21:59","modified_gmt":"2025-07-27T19:21:59","slug":"emberly-popups","status":"publish","type":"plugin","link":"https:\/\/so.wordpress.org\/plugins\/emberly-popups\/","author":16042992,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.3","stable_tag":"1.3","tested":"6.8.5","requires":"5.0","requires_php":"","requires_plugins":null,"header_name":"Emberly Popups","header_author":"Emberly Digital","header_description":"Lightweight, accessible popups called via functions. By developers, for developers!","assets_banners_color":"5f6f74","last_updated":"2025-07-27 19:21:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/emberlydigital.com\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":1097,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2":{"tag":"1.2","author":"emberlydigital","date":"2025-07-27 19:21:59"},"1.2.1":{"tag":"1.2.1","author":"emberlydigital","date":"2025-07-27 19:21:59"},"1.3":{"tag":"1.3","author":"emberlydigital","date":"2025-07-27 19:21:59"}},"upgrade_notice":{"1.3":"<p>Make sure to rebuild assets if you override CSS\/JS; no breaking changes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3291468,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3291468,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3291468,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2","1.2.1","1.3"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1985,2275,613,8773,491],"plugin_category":[34],"plugin_contributors":[242083],"plugin_business_model":[],"class_list":["post-231888","plugin","type-plugin","status-publish","hentry","plugin_tags-accessible","plugin_tags-developer","plugin_tags-modal","plugin_tags-overlay","plugin_tags-popup","plugin_category-accessibility","plugin_contributors-emberlydigital","plugin_committers-emberlydigital"],"banners":{"banner":"https:\/\/ps.w.org\/emberly-popups\/assets\/banner-772x250.png?rev=3291468","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/emberly-popups\/assets\/icon-128x128.png?rev=3291468","icon_2x":"https:\/\/ps.w.org\/emberly-popups\/assets\/icon-256x256.png?rev=3291468","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Emberly Popups<\/strong> is a simple PHP function that generates ARIA\u2011compliant modal popups. Great for newsletters, surveys, announcements, or any call\u2011to\u2011action:<\/p>\n\n<ul>\n<li>Auto\u2011open after a configurable delay  <\/li>\n<li>Cookie\u2011 or session\u2011based \u201cshow once\u201d control  <\/li>\n<li>Repeat interval (milliseconds) between popups  <\/li>\n<li>Shortcode support inside popup content  <\/li>\n<li>Adjustable width and padding  <\/li>\n<li>Accessible markup with proper ARIA roles<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<h3>PHP 8+ (named arguments)<\/h3>\n\n<p>```php\nemberly_popup(\n    title            : 'Welcome!',\n    content          : '<\/p>\n\n<p>Thanks for visiting our site. Don\u2019t miss our latest offers!<\/p>\n\n<p>',\n    id               : 'welcome-popup',\n    width            : '50rem',\n    padding          : '3rem',\n    echo             : true,\n    output_shortcodes: true,\n    auto_open        : true,\n    delay            : 2000,\n    show_once        : false,\n    persistence_method: 'session',\n    show_interval_ms : 1800000  \/\/ 30 minutes\n);\n    <code>&lt;h3&gt;PHP 7 &amp; earlier (ordered arguments)&lt;\/h3&gt;```php\nemberly_popup(\n    '',                               \/\/ $title\n    '&lt;p&gt;Thanks for visiting our site. Don't miss our latest offers!&lt;\/p&gt;',\n    'category-survey-popup',          \/\/ $id\n    '50rem',                          \/\/ $width\n    '3rem',                           \/\/ $padding\n    true,                             \/\/ $echo\n    true,                             \/\/ $output_shortcodes\n    true,                             \/\/ $auto_open\n    2000,                             \/\/ $delay\n    false,                            \/\/ $show_once\n    'session',                        \/\/ $persistence_method\n    1800000                           \/\/ $show_interval_ms\n);<\/code><\/p>\n\n<h3>Manual triggers<\/h3>\n\n<p>Anywhere in your markup, add:\n    <code>html\n&lt;a href=\"#\" em-popup-trigger-id=\"welcome-popup\"&gt;Open Welcome Popup&lt;\/a&gt;<\/code>\nThe <code>em-popup-trigger-id<\/code> value must match the <code>$id<\/code> you set in <code>emberly_popup()<\/code>.<\/p>\n\n<h3>Parameters<\/h3>\n\n\n\n\n  Parameter\n  Type\n  Default\n  Description\n\n\n\n\n  title\n  string\n  ''\n  Popup heading text.\n\n\n  content\n  string\n  ''\n  HTML for the popup\u2019s body.\n\n\n  id\n  string\n  ''\n  Unique popup identifier (required for cookies\/sessions &amp; triggers).\n\n\n  width\n  string\n  '60rem'\n  CSS max-width for the popup container.\n\n\n  padding\n  string\n  '3rem'\n  Inner padding inside the popup.\n\n\n  echo\n  bool\n  true\n  Echo the markup immediately (false to return as string).\n\n\n  output_shortcodes\n  bool\n  false\n  Process WordPress shortcodes in <code>content<\/code>.\n\n\n  auto_open\n  bool\n  false\n  Automatically open after <code>delay<\/code> ms.\n\n\n  delay\n  int\n  0\n  Milliseconds to wait before auto-open.\n\n\n  show_once\n  bool\n  false\n  If true, shows only once per session\/cookie period.\n\n\n  persistence_method\n  string\n  'cookie'\n  Where to store \u201cshown\u201d flag: 'cookie' or 'session'.\n\n\n  show_interval_ms\n  int\n  0\n  Minimum interval (ms) before showing again. 0 disables repeats.\n\n\n  debug\n  bool\n  false\n  Log internal events to browser console (load, open, cookies, scroll lock).\n\n\n\n\n<h3>Debugging<\/h3>\n\n<p>Add <code>debug: true<\/code> (PHP\u00a08+) or append <code>true<\/code> as the 13th argument (PHP\u00a07) to enable console logging:<\/p>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>\/\/ PHP 8+ example\nemberly_popup(\n    title : 'Debug Popup',\n    content: '<\/p>\n\n<p>Debugging is on!<\/p>\n\n<p>',\n    id    : 'debug-popup',\n    debug : true\n);\n    `<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Copy the <strong>emberly_popup()<\/strong> function into your theme\u2019s <code>functions.php<\/code> or a custom plugin.  <\/li>\n<li>Enqueue or include the popup\u2019s CSS and JS assets.  <\/li>\n<li>Ensure <code>assets\/icons\/close.svg<\/code> exists (used for the close button).  <\/li>\n<li>Call <code>emberly_popup()<\/code> anywhere in your PHP templates.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='what%20if%20i%20don%E2%80%99t%20set%20an%20id%3F'><h3>What if I don\u2019t set an ID?<\/h3><\/dt>\n<dd><p>An ID is required for cookies\/sessions and manual triggers; omit at your own risk.<\/p><\/dd>\n<dt id='can%20i%20use%20shortcodes%20in%20my%20popup%3F'><h3>Can I use shortcodes in my popup?<\/h3><\/dt>\n<dd><p>Yes\u2014set <code>output_shortcodes<\/code> to <code>true<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3<\/h4>\n\n<ul>\n<li>Fixed minor CSS selector issue in nested themes.<\/li>\n<li>Added <code>debug<\/code> parameter to PHP\u00a07 ordered args example.<\/li>\n<li>Improved README formatting for WP.org.<\/li>\n<li>Fixed trigger logging order. Now logs triggers before content by moving the trigger handler up to the body.<\/li>\n<li>Added compatibility to override smooth scrolling when closing a popup.<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Added <code>debug<\/code> logging support.<\/li>\n<li>Support for PHP\u00a08 named arguments.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<\/ul>","raw_excerpt":"Lightweight, accessible popups for WordPress\u2014made by developers, for developers.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/231888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=231888"}],"author":[{"embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/emberlydigital"}],"wp:attachment":[{"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=231888"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=231888"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=231888"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=231888"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=231888"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=231888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}