Create WordPress Post
wp_create_postCreate a WordPress post with full control over title, content, status, categories, tags, and scheduling. Defaults to draft for safety; set status to publish to publish immediately.
Instructions
Create a new blog post. Defaults to status='draft' for safety — set status='publish' to publish immediately.
Args:
title (string): Post title.
content (string): HTML body.
excerpt (string): Optional short summary.
slug (string): URL slug. Auto-generated from title if omitted.
status (enum): publish | future | draft | pending | private. Default 'draft'.
author (number): Author user ID. Defaults to authenticated user.
featured_media (number): Featured image media ID.
date (string): ISO 8601 schedule date. Set status='future' for scheduling.
categories (number[]): Category IDs.
tags (number[]): Tag IDs.
response_format (enum): markdown | json. Default 'markdown'.
Returns: The created WPContentItem (id, slug, status, link, etc.)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Publish/schedule date in ISO 8601 (e.g. '2026-05-15T10:00:00'). For scheduling, also set status='future'. | |
| slug | No | URL slug. WP auto-generates from title if omitted on create. | |
| tags | No | Tag IDs to assign. Replaces existing on update. | |
| title | No | Post/page title (plain text). | |
| author | No | Author user ID. Defaults to the authenticated user on create. | |
| status | No | Status. Defaults to 'draft' for safety. Set to 'publish' to publish immediately. | draft |
| content | No | Post/page HTML content. Send <p>, <h2>, <a>, <img>, etc. WP renders inline. | |
| excerpt | No | Short summary shown on archive/listing pages. | |
| categories | No | Category IDs to assign. Replaces existing on update. | |
| featured_media | No | Featured image media ID. Use 0 to unset. | |
| response_format | No | Output format: 'markdown' for human-readable, 'json' for machine-readable. | markdown |