Opus Growth

Update WordPress Post

Update an existing WordPress post or page by its ID.

Type
Makes changes
Credits
1
Platform
WordPress
Approval
Preview first, applied after you approve

What it does

Update an existing WordPress post or page by its ID. Only the fields you pass are changed; edits keep WordPress revisions.

THE RESPONSE DOES NOT CARRY THE PAGE BACK. A write answers with `ok`, the `replaced` counts and any `charset_warning` — the three things that tell you whether the edit landed. The stored content is left out and marked `content_omitted: true` with `content_chars`, because a WPBakery home page is 45 KB and returning it made the tool result itself too large to read: the write had succeeded, but the caller saw a size error and could not tell (issue #293). Pass `return_content=true` if you really need the stored content back and the page is small.

COMMENTS / PINGBACKS: comment_status and ping_status take 'open' or 'closed' and act on THIS post only. WordPress' own Settings > Discussion screen changes the default for NEW posts and leaves existing ones untouched, so closing comments on a published page is only possible here. Needs Opus Growth Connector 0.6.0 or newer on the site.

On a page built with Elementor the content field is not what visitors see, so it is skipped and reported back to you: use wordpress_page_design and wordpress_edit_page_design for those pages. featured_media sets the featured image by media id (get one from wordpress_media); 0 removes it. categories and tags take names and are created if missing, which is how you move a published post out of "Uncategorized". author takes a user id, username or display name and changes the byline; use wordpress_users to find the right one. template, meta and copy_meta_from work as in wordpress_create_post — set the page's theme template, write WPBakery/theme post meta, or copy a working page's layout meta (template + WPBakery CSS) onto this one (Connector 0.9.2+).

On a page built from shortcodes (Avada/Fusion, WPBakery) rewriting content replaces the builder markup; replace=[{"find": "old text", "with": "new text"}] changes only the matched text. That changes only the text you name and leaves the shortcode layout untouched. If nothing matches, nothing is written and you are told so. wordpress_get_post returns the exact text a replace has to match.

Text copied out of a page often will NOT match literally, because editors leave invisible characters in it — non-breaking spaces, smart quotes, long dashes — that look like ordinary ones. When that happens the reply says so and tells you how many times it WOULD match; send the same call again with match="normalized" and those characters are treated as their plain equivalents. match is also accepted per entry ({"find": ..., "with": ..., "match": "normalized"}) when only one of several replacements needs it; the top-level value applies to every entry that does not carry its own. wordpress_get_post(raw=true) shows the invisible characters spelled out if you want to see them.

MCP: wordpress_update_post

How to use it

You don't call tools by name. Write what you want in ChatGPT, Claude or another assistant connected to Opus Growth, in your own words; it picks this tool when it fits.

Because this tool changes your account, your assistant first shows a preview of exactly what will change. Nothing is applied until you say yes, and every applied change is written to your audit log.

Parameters

NameTypeRequiredDefault
idintegerRequired·Exact resource identifier to target. Prefer an ID returned by an Opus Growth list or create operation.
titlestringOptional·Human-readable title for the resource being created or updated.
contentstringOptional·Main content body to create, analyse, or update in the format required by this operation.
statusstringOptional·Desired provider status for this resource; choose an allowed value from this schema.
excerptstringOptional·Optional short summary or excerpt shown alongside the main content.
featured_mediaintegerOptional-1Numeric featured media value for wordpress update post. Use the provider's expected unit, range, and precision.
categoriesarrayOptional·One or more exact category identifiers or names accepted by this operation. Prefer values returned by the relevant category-listing operation.
tagsarrayOptional·One or more tag values or identifiers to assign, in the provider's required item format.
authorstringOptional·Exact author value for wordpress update post. Supply text in the provider's required format; when it selects an existing resource, use the exact identifier returned by the relevant list or search operation.
replacearrayOptional·Replacement text or structured replacement rule to apply when this operation supports replacement.
matchstringOptional·literal · normalized · Exact match value for wordpress update post. Supply text in the provider's required format; when it selects an existing resource, use the exact identifier returned by the relevant list or search operation; matching the schema pattern.
comment_statusstringOptional·open · closed · Provider status for comment. Use an allowed status value and retain the current status when no change is intended.
ping_statusstringOptional·open · closed · Provider status for ping. Use an allowed status value and retain the current status when no change is intended.
templatestringOptional·Exact template value for wordpress update post. Supply text in the provider's required format; when it selects an existing resource, use the exact identifier returned by the relevant list or search operation.
metaobjectOptional·Structured metadata key/value object for the selected resource. Use only provider-supported keys and preserve each key's required value type.
copy_meta_fromintegerOptional0Numeric copy meta from value for wordpress update post. Use the provider's expected unit, range, and precision.
site_urlstringOptional·Exact URL of the connected WordPress site to target when more than one site is available.
return_contentbooleanOptionalfalseWhether to enable return content for this operation.