Build and edit Elementor pages via mcpwp — layout modes, widget keys, flex grids, blueprints, validation, CSS regeneration. Use before working with Elementor data.
Scanned 6/11/2026
Install via CLI
openskills install Mumega-com/mcpwp-claude-plugin---
name: elementor
description: Build and edit Elementor pages via mcpwp — layout modes, widget keys, flex grids, blueprints, validation, CSS regeneration. Use before working with Elementor data.
user-invocable: true
---
# Elementor Building Guide
How to build and edit Elementor pages via mcpwp. $ARGUMENTS = action or page ID.
## Layout Modes
Check `wp_site_info()` → `elementor.layout_mode`:
- **container** (Elementor 3.x+ flexbox): `container > container(isInner:true) > widget`
- **classic** (legacy): `section > column(_column_size sums to 100) > widget`
Most modern sites use container mode.
## Building a Full Page
```
wp_build_page(
title: "Services",
sections: [
{type: "hero", heading: "Our Services", subheading: "What we do best", button_text: "Get Started", background: "#0a0a0a"},
{type: "features", columns: 3, heading: "Why Choose Us", items: [
{icon: "fas fa-rocket", title: "Fast", desc: "Lightning speed", button_text: "Learn More", url: "/fast"},
{icon: "fas fa-shield-alt", title: "Secure", desc: "Bank-grade security"},
{icon: "fas fa-heart", title: "Reliable", desc: "99.9% uptime"}
]},
{type: "cta", heading: "Ready?", button_text: "Start Now", button_url: "/contact", background: "#1e40af"}
]
)
```
## Surgical Edits
### Edit one widget
```
# 1. Get the page structure
wp_get_elementor_summary(id=42)
# 2. Find the widget ID from the summary
# 3. Edit it
wp_edit_widget(page_id=42, widget_id="abc12345", settings={title_text: "New Title", title_color: "#FF0000"})
```
### Edit a section/container
```
wp_edit_section(page_id=42, element_id="xyz789", settings={
background_color: "#1e293b",
padding: {top: "80", bottom: "80", unit: "px"}
})
```
### Add a section to an existing page
```
wp_add_section(id=42, position="end", blueprint="cta", params={
heading: "Get Started Today",
button_text: "Contact Us",
button_url: "/contact"
})
```
## Widget Control Keys
**Always check before setting properties:**
```
wp_get_widget_schema(widget_type="button")
```
### Common Widgets Quick Reference
**heading:** `title`, `header_size` (h1-h6), `align`, `title_color`
**button:** `text`, `link` ({url, is_external}), `size` (xs/sm/md/lg/xl), `align`, `background_color`, `button_text_color`, `border_radius`
**icon-box:** `selected_icon` ({value, library}), `title_text`, `description_text`, `position` (top/left/right), `align` (left/center/right), `primary_color`, `title_color`
**image:** `image` ({url, id}), `image_size`, `align`, `link`
**text-editor:** `editor` (HTML string), `align`
## Container Flex Properties
For card grids in container mode:
**Parent container:**
- `flex_direction: "row"`
- `flex_wrap: "wrap"`
- `flex_gap: {size: 20, unit: "px"}`
- `content_width: "boxed"`
**Child card containers:**
- `_element_width: "initial"`
- `width: {size: 30, unit: "%"}` (3-col) / `{size: 47, unit: "%"}` (2-col)
- `background_color: "#FFFFFF"`
- `border_radius: {top_left: "12", top_right: "12", bottom_right: "12", bottom_left: "12", unit: "px"}`
- `box_shadow_box_shadow_type: "yes"`
- `box_shadow_box_shadow: {horizontal: 0, vertical: 4, blur: 20, spread: 0, color: "rgba(0,0,0,0.08)"}`
- `padding: {top: "30", bottom: "30", left: "30", right: "30", unit: "px"}`
## Validation
mcpwp auto-validates and fixes:
- Missing element IDs → auto-generated
- Missing `isInner` on nested containers → auto-set
- Wrong widget keys → renamed if known, warned if unknown
- Widget type typos → fuzzy-matched with "did you mean?" suggestions
Use `dry_run: true` on `wp_set_elementor` to validate without saving.
## CSS Regeneration
After bulk changes, regenerate CSS:
```
wp_regenerate_elementor_css(force: true) # All pages
wp_regenerate_elementor_css(page_id: 42) # Single page
```
No comments yet. Be the first to comment!