17
Total
10
Read
5
Write
2
Delete
Overview
The Content module manages WordPress post objects — posts, pages, and custom post types. It wraps core functions like wp_insert_post(), get_post(), and wp_delete_post() behind named, schema-validated, permission-gated abilities.
Block markup note: content/get returns rendered HTML with block comments stripped. For raw block markup, use SSH + WP-CLI. The content/update ability accepts full block markup and preserves it on save.
Ability Reference
| Ability | Type | Description |
|---|---|---|
content/list | R | List posts with filters (type, status, category, tag, author, search) |
content/get | R | Get a single post by ID with full content and metadata |
content/get-by-slug | R | Get a post by its URL slug |
content/get-text | R | Get plain text content (block markup stripped) |
content/get-snapshot | R | Get a lightweight snapshot — title, excerpt, status, dates |
content/search-replace | R | Preview search-replace across content without applying |
content/find-by-url | R | Resolve a URL to its post ID and type |
content/discover-types | R | List all registered post types and their settings |
content/list-structure | R | Get hierarchical page/post structure for a post type |
content/get-site-map | R | Full site content map with counts per type and status |
content/create | W | Create a new post, page, or custom post type |
content/update | W | Update an existing post — content, title, status, meta |
content/append | W | Append block markup to existing content without full rewrite |
content/batch-update | W | Update multiple posts in one call (status, author, category) |
content/change-type | W | Convert a post from one type to another (post → page) |
content/delete | D | Trash or permanently delete a post |
content/duplicate | W | Duplicate a post with all content and metadata |
Common Workflows
Publish a blog post
- Call
content/createwith title, content, andstatus: "draft" - Call
taxonomies/assign-to-contentto set categories and tags - Call
media/createto upload a featured image - Call
content/updatewithfeatured_imageset to the media ID - Call
content/updatewithstatus: "publish"when ready
Survey site content structure
- Call
content/get-site-mapfor a full overview of all content - Call
content/discover-typesto see registered post types - Call
content/list-structurefor hierarchical page trees - Call
content/listwith filters to drill into specific content
Surgical content edit
- Call
content/getto read the current content - Modify the specific block markup needed
- Call
content/updatewith the full modified content - Or use
content/appendif adding to the end
Related Modules
Parse, insert, update, and manage Gutenberg blocks within posts
Upload, manage, and attach images, files, and media to posts
Categories, tags, and custom taxonomies — create, assign, manage
Version history — list, compare, restore, and purge post revisions
Known Gotchas
Block markup is stripped from content/get. The content/get ability returns rendered HTML — block comment delimiters (<!-- wp:paragraph -->) are stripped by WordPress. For raw block markup, use SSH + WP-CLI. content/update and content/append accept and preserve full block markup.
content/append is not content/update. content/append adds blocks to the end of existing content without reading the full page. content/update replaces the entire content. If you use content/update with only the new section, you’ll overwrite everything that was there.
Post status matters for visibility. Posts created with status: "draft" are not visible on the front end. You must explicitly set status: "publish" via content/update. There is no auto-publish.