{"id":85625,"date":"2018-05-12T05:07:21","date_gmt":"2018-05-12T05:07:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ele-conditions\/"},"modified":"2026-05-06T18:49:28","modified_gmt":"2026-05-06T18:49:28","slug":"ele-conditions","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/ele-conditions\/","author":13647991,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.0.0","stable_tag":"2.0.0","tested":"6.9.4","requires":"5.9","requires_php":"7.4","requires_plugins":null,"header_name":"Ele Conditions for Elementor","header_author":"Liviu Duda","header_description":"Elementor conditions for elements and widgets.","assets_banners_color":"d2abd8","last_updated":"2026-05-06 18:49:28","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.paypal.me\/dudaster","header_plugin_uri":"https:\/\/www.eletemplator.com","header_author_uri":"https:\/\/www.leadpro.ro","rating":5,"author_block_rating":0,"active_installs":4000,"downloads":36417,"num_ratings":5,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.6":{"tag":"1.0.6","author":"dudaster","date":"2026-05-04 15:27:11"},"1.0.7":{"tag":"1.0.7","author":"dudaster","date":"2026-05-04 15:34:44"},"1.0.8":{"tag":"1.0.8","author":"dudaster","date":"2026-05-06 07:26:06"},"2.0.0":{"tag":"2.0.0","author":"dudaster","date":"2026-05-06 18:49:28"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":"4"},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3524723,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3524723,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3524723,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3524723,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3524723,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.6","1.0.7","1.0.8","2.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3524723,"resolution":"1","location":"assets","locale":"","width":1400,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3524723,"resolution":"2","location":"assets","locale":"","width":1400,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3524723,"resolution":"3","location":"assets","locale":"","width":1400,"height":900}},"screenshots":{"1":"Triggers panel in Elementor Advanced tab \u2014 add a trigger with one click: choose trigger type (Click, Scroll into view, Exit intent\u2026) and action (Show, Hide, Toggle, Add Class\u2026).","2":"Multiple triggers on the same element \u2014 combine scroll_into_view \u2192 show with exit_intent \u2192 add_class for layered interactions.","3":"Display Conditions panel \u2014 variable comparison conditions with Variable, Operator, and Value; Debug mode toggle included."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[4060,76538,11551,149205,6309],"plugin_category":[43],"plugin_contributors":[82305],"plugin_business_model":[],"class_list":["post-85625","plugin","type-plugin","status-publish","hentry","plugin_tags-conditional","plugin_tags-elementor","plugin_tags-interactions","plugin_tags-triggers","plugin_tags-visibility","plugin_category-customization","plugin_contributors-dudaster","plugin_committers-dudaster"],"banners":{"banner":"https:\/\/ps.w.org\/ele-conditions\/assets\/banner-772x250.png?rev=3524723","banner_2x":"https:\/\/ps.w.org\/ele-conditions\/assets\/banner-1544x500.png?rev=3524723","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ele-conditions\/assets\/icon.svg?rev=3524723","icon":"https:\/\/ps.w.org\/ele-conditions\/assets\/icon.svg?rev=3524723","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ele-conditions\/assets\/screenshot-1.png?rev=3524723","caption":"Triggers panel in Elementor Advanced tab \u2014 add a trigger with one click: choose trigger type (Click, Scroll into view, Exit intent\u2026) and action (Show, Hide, Toggle, Add Class\u2026)."},{"src":"https:\/\/ps.w.org\/ele-conditions\/assets\/screenshot-2.png?rev=3524723","caption":"Multiple triggers on the same element \u2014 combine scroll_into_view \u2192 show with exit_intent \u2192 add_class for layered interactions."},{"src":"https:\/\/ps.w.org\/ele-conditions\/assets\/screenshot-3.png?rev=3524723","caption":"Display Conditions panel \u2014 variable comparison conditions with Variable, Operator, and Value; Debug mode toggle included."}],"raw_content":"<!--section=description-->\n<p><strong>Ele Conditions for Elementor<\/strong> turns static Elementor elements into interactive, context-aware components \u2014 without writing a single line of code.<\/p>\n\n<p>There are two independent systems, both accessible from the <strong>Advanced tab<\/strong> of any widget, section, or container:<\/p>\n\n\n\n<h4>\u26a1 Triggers &amp; Actions (client-side, no page reload)<\/h4>\n\n<p>Attach one or more trigger \u2192 action pairs to any element.<\/p>\n\n<p><strong>10 trigger types:<\/strong><\/p>\n\n<ul>\n<li><strong>Click<\/strong> \u2014 user clicks the element<\/li>\n<li><strong>Hover<\/strong> \u2014 user hovers over the element<\/li>\n<li><strong>Delay on load<\/strong> \u2014 fires after X milliseconds from page load<\/li>\n<li><strong>Scroll into view<\/strong> \u2014 fires once when the element enters the viewport<\/li>\n<li><strong>Time on page<\/strong> \u2014 fires after X seconds the visitor has been on the page<\/li>\n<li><strong>Exit intent<\/strong> \u2014 fires when the cursor moves toward closing the tab<\/li>\n<li><strong>First visit<\/strong> \u2014 fires only on the visitor's very first page load (localStorage)<\/li>\n<li><strong>Nth visit<\/strong> \u2014 fires on the Nth page load (visit counter in localStorage)<\/li>\n<li><strong>A\/B Group A \/ B<\/strong> \u2014 fires for visitors randomly assigned to group A or B (persists via localStorage)<\/li>\n<\/ul>\n\n<p><strong>9 action types:<\/strong><\/p>\n\n<ul>\n<li><strong>Show<\/strong> \u2014 make the target element visible<\/li>\n<li><strong>Hide<\/strong> \u2014 hide the target element<\/li>\n<li><strong>Toggle<\/strong> \u2014 toggle visibility on each trigger<\/li>\n<li><strong>Add \/ Remove \/ Toggle Class<\/strong> \u2014 apply a CSS class (great for CSS animations)<\/li>\n<li><strong>Scroll To<\/strong> \u2014 smooth-scroll the page to the target element<\/li>\n<li><strong>Focus<\/strong> \u2014 set browser focus on the target (input fields, etc.)<\/li>\n<li><strong>Close Others in Group<\/strong> \u2014 hide all siblings sharing a CSS class (accordion pattern)<\/li>\n<\/ul>\n\n<p><strong>Target selector:<\/strong> leave empty to act on the element itself, or enter any CSS selector to act on another element anywhere on the page.<\/p>\n\n<p><strong>Hide Initially:<\/strong> a dedicated switcher that hides the element on load independently of triggers \u2014 useful for elements revealed by a trigger.<\/p>\n\n\n\n<h4>\ud83c\udf9b Display Conditions (server-side, evaluated at render time)<\/h4>\n\n<p>Show or hide elements based on variables, rules, and time windows. Multiple conditions per element with AND \/ OR logic.<\/p>\n\n<p><strong>Built-in variables<\/strong> include: <code>user_role<\/code>, <code>is_logged_in<\/code>, <code>user_id<\/code>, <code>post_type<\/code>, <code>post_status<\/code>, <code>post_age_days<\/code>, <code>post_word_count<\/code>, <code>post_has_thumbnail<\/code>, <code>cart_count<\/code>, <code>cart_total<\/code>, <code>current_hour<\/code>, <code>current_day<\/code>, <code>current_month<\/code>, <code>current_year<\/code>, <code>utm_source<\/code>, <code>utm_medium<\/code>, <code>utm_campaign<\/code>, <code>utm_content<\/code>, <code>utm_term<\/code>, and more.<\/p>\n\n<p><strong>Condition types:<\/strong><\/p>\n\n<ul>\n<li><strong>Simple<\/strong> \u2014 compare a variable to a value using ==, !=, &gt;, &lt;, &gt;=, &lt;=, contains, starts_with, ends_with, empty, not_empty<\/li>\n<li><strong>Time interval<\/strong> \u2014 show element only between two times of day (supports cross-midnight ranges)<\/li>\n<li><strong>Date\/datetime interval<\/strong> \u2014 show element only within a date or datetime window<\/li>\n<\/ul>\n\n<p><strong>Custom variables<\/strong> \u2014 register your own variables via the <code>eleconditions_vars<\/code> filter in your theme's <code>functions.php<\/code>.<\/p>\n\n<p><strong>ACF support<\/strong> \u2014 pick any ACF field from a searchable dropdown; the value is fetched at render time.<\/p>\n\n<p><strong>User meta<\/strong> \u2014 condition on any WordPress user meta key for the current visitor.<\/p>\n\n<p><strong>Debug mode<\/strong> \u2014 shows a red-bordered overlay with the evaluated variable values, visible only to editors and administrators.<\/p>\n\n\n\n<h4>Developer-friendly<\/h4>\n\n<ul>\n<li>Zero dependencies beyond Elementor<\/li>\n<li>Fully filterable variable system<\/li>\n<li>No inline styles injected into saved content \u2014 everything is evaluated at render<\/li>\n<\/ul>\n\n<p>Note: Requires the free <a href=\"https:\/\/wordpress.org\/plugins\/elementor\/\">Elementor<\/a> plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <a href=\"https:\/\/wordpress.org\/plugins\/elementor\/\">Elementor<\/a>.<\/li>\n<li>Upload the plugin through <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, or install directly from the WordPress.org directory.<\/li>\n<li>Activate <strong>Ele Conditions for Elementor<\/strong>.<\/li>\n<li>Open any widget, section, or container in Elementor \u2192 <strong>Advanced tab<\/strong> \u2192 look for <strong>Ele Conditions<\/strong> (display conditions) and <strong>Triggers<\/strong> (interactive triggers).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20find%20the%20triggers%20panel%3F\"><h3>Where do I find the Triggers panel?<\/h3><\/dt>\n<dd><p>Open any widget or section in Elementor, go to the <strong>Advanced<\/strong> tab, and scroll to the <strong>Triggers<\/strong> section.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20the%20display%20conditions%20panel%3F\"><h3>Where do I find the Display Conditions panel?<\/h3><\/dt>\n<dd><p>Same Advanced tab, scroll to the <strong>Ele Conditions<\/strong> section \u2014 just above Triggers.<\/p><\/dd>\n<dt id=\"can%20i%20trigger%20an%20action%20on%20a%20different%20element%3F\"><h3>Can I trigger an action on a different element?<\/h3><\/dt>\n<dd><p>Yes. Enter a CSS selector in the <strong>Target<\/strong> field (e.g. <code>.my-popup<\/code> or <code>#hero-button<\/code>). Leave it empty to target the element itself.<\/p><\/dd>\n<dt id=\"how%20does%20a%2Fb%20testing%20work%3F\"><h3>How does A\/B testing work?<\/h3><\/dt>\n<dd><p>On first page load the visitor is randomly assigned to group A or B. That assignment is saved in <code>localStorage<\/code> and stays consistent across sessions. Use <strong>A\/B Group A<\/strong> and <strong>A\/B Group B<\/strong> triggers on different elements to show different content to each group.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20my%20own%20variables%3F\"><h3>How do I add my own variables?<\/h3><\/dt>\n<dd><p>Add a filter in your theme's <code>functions.php<\/code>:<\/p>\n\n<pre><code>add_filter( 'eleconditions_vars', function( $vars ) { $vars['my_var'] = 'some_value'; return $vars; } );\n<\/code><\/pre>\n\n<p>Then select <strong>Custom<\/strong> in the variable dropdown and type <code>my_var<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%20containers%20%28flexbox%29%3F\"><h3>Does it work with Elementor containers (Flexbox)?<\/h3><\/dt>\n<dd><p>Yes \u2014 triggers and conditions work on widgets, sections, and containers.<\/p><\/dd>\n<dt id=\"is%20there%20a%20performance%20impact%3F\"><h3>Is there a performance impact?<\/h3><\/dt>\n<dd><p>Display conditions are evaluated server-side at render time \u2014 no JavaScript needed for them. The triggers script (<code>triggers.js<\/code>) is a single lightweight IIFE loaded in the footer only when needed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Major release \u2014 Triggers system promoted to primary feature.<\/li>\n<li>Rename tab label from \"Triggered\" to \"Triggers\".<\/li>\n<li>Add 7 new trigger types: Scroll into view, Time on page, Exit intent, First visit, Nth visit, A\/B Group A, A\/B Group B.<\/li>\n<li>Add \"Hide Initially\" switcher (works independently of trigger list).<\/li>\n<li>Add UTM \/ query-string variables: utm_source, utm_medium, utm_campaign, utm_content, utm_term.<\/li>\n<li>Add post-relative variables: post_age_days, post_has_thumbnail, post_word_count.<\/li>\n<li>Add user meta condition type.<\/li>\n<li>localStorage wrapped in try\/catch for Safari Private Browsing compatibility.<\/li>\n<li>A\/B group assignments and visit counts persist via localStorage.<\/li>\n<li>Restructure project as monorepo (plugin\/ \u2192 ele-conditions\/ subfolder).<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Move Ele Conditions section from Style tab to Advanced tab.<\/li>\n<li>Rename section label from \"Conditions\" to \"Ele Conditions\".<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Add Triggers tab in Advanced panel: Click, Hover, Delay on load triggers; Show, Hide, Toggle, Add\/Remove\/Toggle Class, Scroll To, Focus, Close Others actions.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Replace date\/time text inputs with native datetime-local picker.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Add ACF\/meta field dropdown (SELECT2) populated from database and ACF field groups.<\/li>\n<li>Add content_length and excerpt_length variables.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Add date\/datetime interval condition type (inclusive, WordPress timezone).<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Add time interval condition type with cross-midnight support.<\/li>\n<li>Add built-in variables: comment_count, post_author, post_status, post_type, user_id, user_role, is_logged_in, current_hour\/day\/month\/year\/date, cart_count, cart_total.<\/li>\n<li>Add ACF field support.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>New visual conditions builder with REPEATER UI \u2014 no more manual text input.<\/li>\n<li>Add SELECT for variables and operators.<\/li>\n<li>Support multiple conditions with AND\/OR logic.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Security and compatibility fixes: ABSPATH guard, output escaping, gmdate(), license header.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Rename plugin to comply with WordPress.org trademark guidelines.<\/li>\n<li>Fix text domain to match plugin slug.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Coerce variable to 0 when compared against a number.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Bug fixes.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fix PHP notices.<\/li>\n<li>Handle var == null when variable has no value.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fix sections with latest Elementor version.<\/li>\n<li>Debug mode shows semi-opaque red-bordered overlay for editors\/admins.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Add debug mode (admin\/editor only).<\/li>\n<li>Fix sections support.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Add interactive triggers and conditional display logic to any Elementor element \u2014 show, hide, toggle on click, scroll, exit intent, and more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/85625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=85625"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dudaster"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=85625"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=85625"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=85625"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=85625"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=85625"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=85625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}