Add a Click-to-Open Popup to an Elementor Page Without Elementor Pro with AI
A button that opens a popup with your terms, size guide or details, in free Elementor, tried on a draft copy first.
Prerequisites
A site connected to WPVibe running Elementor (free is enough) and Premium Addons for Elementor 4.11.111 or newer (tested on 4.11.111, the free version) on WordPress 7.0 or newer, with an administrator account and Premium Addons' AI tools on: in wp-admin, Premium Addons > MCP Config & AI Abilities, switch on Enable MCP & AI Abilities. A page built with Elementor.
My WordPress site uses Elementor and the free Premium Addons for Elementor plugin. On my page [page title], add a button "[button text, for example See the sale terms]" that opens a popup with the title "[popup title]" and this text: [the popup's text]. Put it [before the section that starts with X, or at the end of the page].
1. Run get_ability_info for each Premium Addons ability this recipe uses: premium-addons/get-page-structure, premium-addons/check-elementor-element, premium-addons/get-widget-schema and premium-addons/duplicate-post. If none is found, stop and tell me to turn Premium Addons' AI tools on in wp-admin: open Premium Addons, then MCP Config & AI Abilities, and switch on Enable MCP & AI Abilities. If only some are missing, stop and tell me to switch those back on under Manage AI Abilities on the same screen. Premium Addons keeps its build tools (insert-widget, add-container and the rest of its build group) and its template library off the REST API, so WPVibe can't call them; don't look for them, and ignore its design guide where it names them. Load WPVibe's elementor skill for the element format.
2. Find the page with GET /wp/v2/pages?search=[page title]&status=publish,draft,private, then read it with rest_api GET /wp/v2/pages/PAGE_ID with query context edit and _fields id,modified,link,meta._elementor_edit_mode. PAGE_ID is its id and PAGE_URL its link; SITE_URL is my site's address. If _elementor_edit_mode is not builder, stop and tell me the page isn't built with Elementor. Read its layout with premium-addons/get-page-structure and note the ids of its top-level sections, in order.
3. Before you write any Premium Addons widget, run premium-addons/check-elementor-element with its type (if available is false, stop and tell me: it is Pro or switched off), then premium-addons/get-widget-schema with tab content, and use only the keys it lists. Any key you leave out falls back to the schema's default, and some defaults are demo text (Modal Box Title, Modal Box Content and a button that says Premium Addons), so set every text you need. Give each new element a new id of 8 random lowercase hex characters, and each repeater row its own _id of 7. NEW_ID is the id of the new section's outer container. The new section is one container (flex_align_items center) holding one premium-addon-modal-box: premium_modal_box_display_on button, premium_modal_box_button_text, premium_modal_box_header_switcher yes, premium_modal_box_title, premium_modal_box_content_type editor, premium_modal_box_content as my text in HTML paragraphs, dismissible yes, premium_modal_box_lower_close yes, premium_modal_close_text Close. Use the button trigger only: if I asked for a popup on page load, tell me it opens on every page view and ask first; exit intent is Premium Addons Pro.
4. Never resend or retype the page's whole layout: add the section with one small edit. Write it as one compact JSON object, then call rest_api_write POST /wpvibe/v1/content/edit with target_type meta, meta_key _elementor_data and the post_id named below. Before a top-level section: old_content is {"id":"NEXT_ID" (that section's id with the brace and quotes in front), new_content is the new section, a comma, then that same old_content. At the end of the page: run POST /wpvibe/v1/content/search on the same meta with pattern set to the last top-level section's id; its match runs to the end of the value. Take its last 60 to 120 characters, ending with the final closing square bracket, as old_content, and as new_content the same text with a comma and the new section added just before that final bracket. content/edit changes text only where old_content matches exactly once, and refuses an edit that would break the JSON; if it refuses, take a longer old_content and try again. Never use replace_all. Keep the old_content and new_content you used: swapping them is the undo.
5. Copy the page with premium-addons/duplicate-post. COPY_ID is the post_id it returns; the copy is a draft. Add the section to the copy (post_id COPY_ID) as above. Give me the copy's preview link, SITE_URL/?page_id=COPY_ID&preview=true (it only opens while I'm logged in), describe the section, and wait for my yes. Nothing on my live page has changed yet. If I say no, move the copy to the trash with rest_api_write DELETE /wp/v2/pages/COPY_ID and stop. Ask me to click the button in the preview.
6. On my yes, read the page's modified date again; if it changed since step 2, stop and tell me someone edited it. Otherwise make the same edit on the live page (post_id PAGE_ID). Run premium-addons/get-page-structure on it and check every top-level section id from step 2 is still there, in the same order, with NEW_ID where I wanted it. If not, undo the edit and tell me what you saw.
7. Fetch the live page with get_page_html, selector .elementor-element-NEW_ID, and check my button text is in it. That fetch skips page caches, so then run run_wp_cli cache purge --url=PAGE_URL so visitors get the new version too, and tell me what it reported; if it found no cache plugin and my host caches pages, I purge it there. In that section's HTML, also check my popup title, my text and the Close button are there, and that Modal Box Title, Modal Box Content and Premium Addons are not.
8. Ask me to click the button on the live page: Premium Addons loads the popup's script differently in the preview. If my site keeps uploads in cloud storage (an offload plugin) and the button doesn't open the popup there, tell me: Premium Addons' Dynamic Assets Generate links its per-page script from my uploads address, and turning it off (Premium Addons, then Widgets & Add-ons) fixed that on WPVibe's test site.
9. Move the draft copy to the trash with rest_api_write DELETE /wp/v2/pages/COPY_ID. Tell me how to undo: content/edit on the page with the old_content and new_content you used, swapped. Give me the page link and its Elementor edit link.
Skip pasting the full prompt. Drop this into your AI on a site that already has WPVibe:
Run the “Add a Click-to-Open Popup to an Elementor Page Without Elementor Pro with AI” recipe from the WPVibe cookbook on my connected site.
Sale terms, a size guide, a menu, the details of a package: the page needs them, but not in everyone’s way. Elementor’s popups come with Elementor Pro. The free Premium Addons plugin has a Modal Box that opens a popup from a button, and it still takes finding the right trigger, title and close button.
The AI adds a button that opens a popup with your title and text, on a draft copy of your page for you to try. Your live page changes only on your yes, and the AI checks the popup is in place with its close button afterwards.
This recipe opens the popup from a button only. Premium Addons’ exit-intent popup is part of its Pro version, and its free on-page-load popup opens on every page view, so the AI won’t set those up without asking. The AI adds the section with one small edit and keeps a note of it, so taking it out again is one step.
Outcome
A button on your page that opens a popup with your title and text, closed with its Close button or the X.