npx skills add ...
npx skills add jezweb/claude-skills --skill wordpress-elementor
Edit Elementor pages and manage templates on WordPress sites via browser automation (for visual / structural changes) or WP-CLI (for safe text replacements). Use whenever the user wants to edit an Elementor page, update text in Elementor widgets, apply or manage Elementor templates, or make content changes to pages built with the Elementor page builder.
npx skills add jezweb/claude-skills --skill wordpress-elementor
Edit Elementor pages and manage templates on existing WordPress sites. Produces updated page content via browser automation (for visual/structural changes) or WP-CLI (for safe text replacements).
wp @site plugin status elementor| Change Type | Method | Risk |
|---|---|---|
| Text content updates | WP-CLI search-replace | Low (with backup) |
| Image URL swaps | WP-CLI meta update | Low (with backup) |
| Widget styling | Browser automation | None |
| Add/remove sections | Browser automation | None |
| Layout changes | Browser automation | None |
| Template application | Browser automation | None |
Rule of thumb: If you're only changing text or URLs within existing widgets, WP-CLI is faster. For anything structural, use the visual editor via browser.
Always back up first:
Pre-flight checklist:
Simple text replacement:
After updating, clear Elementor's CSS cache:
If the elementor WP-CLI command isn't available:
What's safe to replace:
| Safe | Risky |
|---|---|
| Headings text | HTML structure |
| Paragraph text | Widget IDs |
| Button text and URLs | Section/column settings |
| Image URLs (same dimensions) | Layout properties |
| Phone numbers, emails | CSS classes |
| Addresses | Element ordering |
For structural changes, use browser automation to interact with Elementor's visual editor.
Login flow (skip if already logged in via Chrome MCP):
https://example.com/wp-admin/Open the editor:
https://example.com/wp-admin/post.php?post={ID}&action=elementorEdit text content:
Edit heading:
Change image:
Edit button:
Using playwright-cli:
Or Chrome MCP if using the user's logged-in session.
List saved templates:
Export a template (browser):
https://example.com/wp-admin/edit.php?post_type=elementor_libraryImport a template (browser):
https://example.com/wp-admin/edit.php?post_type=elementor_libraryApply a template to a new page:
wp @site post create --post_type=page --post_title="New Page" --post_status=draftDuplicate an existing page via WP-CLI:
Apply template between pages via WP-CLI:
Take a screenshot to confirm visual changes:
Elementor stores page content as JSON in _elementor_data postmeta. The structure is:
Each element has an id, elType, widgetType, and settings object. Direct manipulation of this JSON is possible but fragile -- always back up first and prefer search-replace over manual JSON editing.
After any WP-CLI change to Elementor data, you must flush the CSS cache. Elementor pre-generates CSS from widget settings. Stale cache = visual changes don't appear.
Global widgets are shared across pages. Editing one updates all instances.
Caution: Replacing text in a global widget's data affects every page that uses it.
| Feature | Free | Pro |
|---|---|---|
| Basic widgets | Yes | Yes |
| Theme Builder | No | Yes |
| Custom fonts | No | Yes |
| Form widget | No | Yes |
| WooCommerce widgets | No | Yes |
| Dynamic content | No | Yes |
Theme Builder templates (header, footer, archive) are stored as elementor_library post type with specific meta indicating their display conditions.
If the Elementor CLI extension is available: