30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

Move Elementor Element

elementor/move-element moves an element to a new parent and sibling position.

Source and destination are updated together, and a move into the element’s own subtree is refused.

At a glance

Abilityelementor/move-element
ToolsetElementor — toolset/elementor
GroupElementor › Elements & Widgets
RequiresElementor, active on the site
Capabilitymanage_options
SafetyWrites data
RepeatableNot idempotent — each call changes the row set, so re-running is not a no-op
Ships inAcrossAI Abilities Manager 0.0.34 and later

The cycle check

Moving a container into one of its own descendants would create a cycle: the element contains the thing that contains it. Elementor does not detect that, and the resulting document is a tree that is not a tree.

What follows is not a clean error. The editor may loop trying to render it, the serialiser may recurse until it runs out of memory, and the document is usually unrecoverable without editing the stored JSON by hand.

So the destination is checked against the source’s subtree first, and a move that would create a cycle is refused before anything is written.

The atomicity matters for the same reason. A move is a removal and an insertion, and a failure between the two would leave the element in neither place — which is data loss dressed as an error.

Not idempotent: the position is relative to the destination’s current children, so the same call twice does not mean the same thing.

Input

NameTypeRequiredWhat it is
post_idintegerYesThe post holding the Elementor document.
element_idstringYesThe seven-character hex element ID.
new_parent_idstring | nullNoThe destination parent, or null for the root.
positionintegerNoIndex among the destination’s children.

What comes back

NameTypeWhat it is
post_idintegerThe post written.
element_idstringThe ID of the element created or affected.
elementobjectThe element as stored.
successbooleanWhether the call completed.
messagestringA one-line summary of what happened, suitable for showing a human.
error_codestringPresent only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation.

Example

Ask your assistant:

Move that heading into the first container.

It resolves to one call:

{
  "ability": "elementor/move-element",
  "parameters": {
    "post_id": 412,
    "element_id": "a1b2c3d",
    "new_parent_id": "e4f5g6h",
    "position": 0
  }
}

Worth knowing

  • A move into the element’s own subtree is refused — it would corrupt the document.
  • Atomic: the element is never in neither place.
  • The element keeps its ID and its children.
  • Not idempotent — position is relative to current children.

Related abilities


Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading