Loading...
Loading...
Create and manage WordPress posts, pages, media, categories, and menus. Workflow: determine content type, choose method (WP-CLI or REST API), execute, verify. Use when creating blog posts, updating pages, uploading media, managing categories and tags, updating menus, or doing bulk content operations on WordPress sites.
npx skill4agent add jezweb/claude-skills wordpress-contentwordpress.config.jsonwp-cli.yml| Task | Best Method |
|---|---|
| Create/edit single post or page | WP-CLI |
| Bulk create posts | WP-CLI loop or REST API batch |
| Upload images/media | WP-CLI |
| Manage categories/tags | WP-CLI |
| Update navigation menus | WP-CLI |
| Scheduled posts | WP-CLI with |
| Complex HTML content | Write to temp file, pass to WP-CLI |
# Simple post
wp @site post create \
--post_type=post \
--post_title="My New Blog Post" \
--post_content="<p>Post content here.</p>" \
--post_status=draft \
--post_category=3,5
# Post from HTML file (better for long content)
wp @site post create ./post-content.html \
--post_type=post \
--post_title="My New Blog Post" \
--post_status=draft \
--post_excerpt="A brief summary of the post." \
--post_category=3,5 \
--tags_input="tag1,tag2"draftpublishpendingfuture--post_datewp @site post create \
--post_type=page \
--post_title="About Us" \
--post_content="<h2>Our Story</h2><p>Content here...</p>" \
--post_status=publish \
--post_parent=0 \
--menu_order=10wp @site post create \
--post_type=post \
--post_title="Scheduled Post" \
--post_content="<p>This goes live tomorrow.</p>" \
--post_status=future \
--post_date="2026-02-23 09:00:00"# Upload from URL
wp @site media import "https://example.com/image.jpg" \
--title="Product Photo" \
--alt="Product front view" \
--caption="Our latest product"
# Upload from local file (requires SCP first for remote sites)
scp ./image.jpg user@host:/tmp/image.jpg
wp @site media import /tmp/image.jpg --title="Local Upload"# Get the attachment ID from the import output, then:
wp @site post meta update {post_id} _thumbnail_id {attachment_id}# List categories
wp @site term list category --fields=term_id,name,slug,count
# Create category
wp @site term create category "News" --slug=news --description="Company news and updates"
# Create child category
wp @site term create category "Product News" --slug=product-news --parent=5
# Assign category to post
wp @site post term add {post_id} category news# Add tags during post creation
wp @site post create --post_title="..." --tags_input="seo,marketing,tips"
# Add tags to existing post
wp @site post term add {post_id} post_tag seo marketing tips# List menus
wp @site menu list --fields=term_id,name,slug,count
# List items in a menu
wp @site menu item list main-menu --fields=db_id,type,title,link
# Add page to menu
wp @site menu item add-post main-menu {page_id} --title="About Us"
# Add custom link
wp @site menu item add-custom main-menu "Contact" "https://example.com/contact/"
# Reorder (set position)
wp @site menu item update {item_id} --position=3# Update post title and content
wp @site post update {post_id} \
--post_title="Updated Title" \
--post_content="<p>New content.</p>"
# Update from file
wp @site post update {post_id} ./updated-content.html
# Bulk update status
wp @site post list --post_type=post --post_status=draft --field=ID | \
xargs -I {} wp @site post update {} --post_status=publish# Check the post
wp @site post get {post_id} --fields=ID,post_title,post_status,guid
# Get the live URL
wp @site post get {post_id} --field=guid
# List recent posts
wp @site post list --post_type=post --posts_per_page=5 --fields=ID,post_title,post_status,post_datehttps://example.com/wp-admin/post.php?post={id}&action=edithttps://example.com/{slug}/cat > /tmp/post-content.html << 'EOF'
<h2>Section Heading</h2>
<p>Paragraph content with <strong>bold</strong> and <a href="/link">links</a>.</p>
<ul>
<li>List item one</li>
<li>List item two</li>
</ul>
EOF
wp @site post create /tmp/post-content.html --post_title="My Post" --post_status=draft--post_contentwhile IFS=, read -r title slug content_file category; do
wp @site post create "$content_file" \
--post_type=post \
--post_title="$title" \
--post_name="$slug" \
--post_category="$category" \
--post_status=draft
sleep 0.5
done < posts.csvdraft# Set ACF field
wp @site post meta update {post_id} field_name "value"
# Get ACF field
wp @site post meta get {post_id} field_name_field_namefield_abc123references/rest-api-endpoints.mdreferences/rest-api-endpoints.mdreferences/wp-cli-content.md