Wordpress Content

jezweb/claude-skills/plugins/wordpress/skills/wordpress-content

作者 jezweb64965d9d9fc7無授權條款1K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫3 天前更新

Create and manage WordPress posts, pages, media, categories, tags, and menus via WP-CLI or the REST API. Use whenever the user wants to publish a blog post on WordPress, update a page, upload media, manage categories or tags, update navigation menus, schedule posts, or do bulk content operations on a WordPress site.

AI 產生的概覽

透過 WP-CLI 或 REST API 管理 WordPress 文章、頁面、媒體、分類、標籤與選單。

功能
此技能引導代理建立、更新、排程與刪除 WordPress 內容,包括文章、頁面、媒體附件、分類、標籤與導覽選單。它提供 WP-CLI 指令模式與 REST API 請求範例,涵蓋批次操作、文章中繼資料、搜尋取代以及匯出匯入。它也包含驗證步驟,並提供所操作內容的後台網址與線上網址。
適用情境
當使用者想要發佈或編輯 WordPress 部落格文章或頁面、上傳媒體、管理分類、標籤或選單、排程文章,或在 WordPress 網站上執行批次內容操作時使用。當無法使用 WP-CLI、需要改用搭配應用程式密碼的 REST API 時也適用。
執行需求
需要可用的 WP-CLI SSH 連線或 WordPress REST API 認證(應用程式密碼),以及來自 wordpress.config.json 或 wp-cli.yml 的網站設定。遠端上傳媒體可能需要 SCP,REST 範例使用 curl 與 jq。此技能不附帶指令碼,僅為說明文件。

WordPress Content

Create, update, and manage WordPress content — posts, pages, media, categories, tags, and menus. Produces live content on the site via WP-CLI or the REST API.

Prerequisites

  • Working WP-CLI SSH connection or REST API credentials (use wordpress-setup skill)
  • Site config from wordpress.config.json or wp-cli.yml

Workflow

Step 1: Determine the Operation

TaskBest Method
Create/edit single post or pageWP-CLI wp post create/update
Bulk create postsWP-CLI loop or REST API batch
Upload images/mediaWP-CLI wp media import
Manage categories/tagsWP-CLI wp term
Update navigation menusWP-CLI wp menu
Scheduled postsWP-CLI with --post_date
Complex HTML contentWrite to temp file, pass to WP-CLI
No SSH access availableREST API with Application Password

Step 2: Create Content

Blog Posts
bash
# Simple postwp @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"

Post statuses: draft, publish, pending, future (use with --post_date)

Pages
bash
wp @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=10
Scheduled Posts
bash
wp @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"

Step 3: Upload Media

bash
# Upload from URLwp @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.jpgwp @site media import /tmp/image.jpg --title="Local Upload"
# Import and set as featured image in one stepwp @site media import "https://example.com/hero.jpg" \  --title="Hero" --featured_image --post_id={id}
# List mediawp @site post list --post_type=attachment --fields=ID,post_title,guid
# Regenerate thumbnailswp @site media regenerate --yes

Set featured image on a post:

bash
# Get the attachment ID from the import output, then:wp @site post meta update {post_id} _thumbnail_id {attachment_id}

Step 4: Manage Taxonomy

Categories
bash
# List categorieswp @site term list category --fields=term_id,name,slug,count
# Create categorywp @site term create category "News" --slug=news --description="Company news and updates"
# Create child categorywp @site term create category "Product News" --slug=product-news --parent=5
# Update categorywp @site term update category {term_id} --name="Updated Name"
# Assign category to postwp @site post term add {post_id} category news
Tags
bash
# List tagswp @site term list post_tag --fields=term_id,name,slug,count
# Create tagwp @site term create post_tag "new-tag"
# Add tags during post creationwp @site post create --post_title="..." --tags_input="seo,marketing,tips"
# Add tags to existing postwp @site post term add {post_id} post_tag seo marketing tips

Step 5: Manage Menus

bash
# List menuswp @site menu list --fields=term_id,name,slug,count
# List items in a menuwp @site menu item list main-menu --fields=db_id,type,title,link,position
# Add page to menuwp @site menu item add-post main-menu {page_id} --title="About Us"
# Add custom linkwp @site menu item add-custom main-menu "Contact" "https://example.com/contact/"
# Add category archive to menuwp @site menu item add-term main-menu category {term_id}
# Reorder (set position)wp @site menu item update {item_id} --position=3
# Delete menu itemwp @site menu item delete {item_id}

Step 6: Update Existing Content

bash
# Update post title and contentwp @site post update {post_id} \  --post_title="Updated Title" \  --post_content="<p>New content.</p>"
# Update from filewp @site post update {post_id} ./updated-content.html
# Search postswp @site post list --s="search term" --fields=ID,post_title
# Bulk update statuswp @site post list --post_type=post --post_status=draft --field=ID | \  xargs -I {} wp @site post update {} --post_status=publish
# Delete (trash)wp @site post delete {post_id}
# Delete permanentlywp @site post delete {post_id} --force

Step 7: Post Meta and Custom Fields

bash
# Get all meta for a postwp @site post meta list {post_id} --fields=meta_key,meta_value
# Get specific metawp @site post meta get {post_id} meta_key
# Set metawp @site post meta update {post_id} meta_key "meta_value"
# Add meta (allows duplicates)wp @site post meta add {post_id} meta_key "meta_value"
# Delete metawp @site post meta delete {post_id} meta_key

ACF stores fields with both the field value and a reference key (_field_name -> field_abc123).

Step 8: Search and Replace

bash
# Dry run first — alwayswp @site search-replace "old text" "new text" --dry-run
# Executewp @site search-replace "old text" "new text" --precise
# Limit to specific tablewp @site search-replace "old" "new" wp_posts --precise
# Limit to specific columnwp @site search-replace "old" "new" wp_posts post_content --precise

Step 9: Export and Import

bash
# Export all contentwp @site export --dir=/tmp/
# Export specific post typewp @site export --post_type=post --dir=/tmp/
# Importwp @site import /path/to/file.xml --authors=mapping.csv

Step 10: Verify

bash
# Check the postwp @site post get {post_id} --fields=ID,post_title,post_status,guid
# Get the live URLwp @site post get {post_id} --field=guid
# List recent postswp @site post list --post_type=post --posts_per_page=5 --fields=ID,post_title,post_status,post_date

Provide the admin URL and live URL:

  • Admin: https://example.com/wp-admin/post.php?post={id}&action=edit
  • Live: https://example.com/{slug}/

REST API Reference

When WP-CLI is not available, use the WordPress REST API with Application Password auth.

Authentication

bash
# Base64 encode credentialsAUTH=$(echo -n "username:xxxx xxxx xxxx xxxx xxxx xxxx" | base64)
# Use in requestscurl -s https://example.com/wp-json/wp/v2/posts \  -H "Authorization: Basic $AUTH" \  -H "Content-Type: application/json"

Endpoints

ResourceEndpoint
Posts/wp-json/wp/v2/posts
Pages/wp-json/wp/v2/pages
Media/wp-json/wp/v2/media
Categories/wp-json/wp/v2/categories
Tags/wp-json/wp/v2/tags

All support GET (list/single), POST (create), PUT (update), DELETE.

Create Post via REST

bash
curl -s https://example.com/wp-json/wp/v2/posts \  -H "Authorization: Basic $AUTH" \  -H "Content-Type: application/json" \  -d '{    "title": "My New Post",    "content": "<p>Post content here.</p>",    "status": "draft",    "categories": [3, 5],    "tags": [10, 12],    "excerpt": "Brief summary",    "featured_media": 456  }' | jq '{id, link, status}'

Create Page via REST

bash
curl -s https://example.com/wp-json/wp/v2/pages \  -H "Authorization: Basic $AUTH" \  -H "Content-Type: application/json" \  -d '{    "title": "About Us",    "content": "<h2>Our Story</h2><p>Content...</p>",    "status": "publish",    "parent": 0  }'

Upload Media via REST

bash
curl -s https://example.com/wp-json/wp/v2/media \  -H "Authorization: Basic $AUTH" \  -H "Content-Disposition: attachment; filename=photo.jpg" \  -H "Content-Type: image/jpeg" \  --data-binary @photo.jpg | jq '{id, source_url}'

Create Category via REST

bash
curl -s https://example.com/wp-json/wp/v2/categories \  -H "Authorization: Basic $AUTH" \  -H "Content-Type: application/json" \  -d '{"name": "News", "slug": "news", "description": "Company updates"}'

Query Parameters

ParameterPurposeExample
per_pageResults per page (max 100)?per_page=50
pagePagination?page=2
searchSearch term?search=keyword
statusFilter by status?status=draft
categoriesFilter by category ID?categories=3
orderbySort field?orderby=date
orderSort direction?order=desc
_fieldsLimit response fields?_fields=id,title,link

Menus: Navigation menus have limited REST API support. The /wp-json/wp/v2/navigation endpoint exists for block-based navigation in FSE themes. For classic menus, use WP-CLI.


Critical Patterns

HTML Content in WP-CLI

For anything beyond a sentence, write HTML to a temp file and pass it:

bash
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

Shell quoting in --post_content is fragile for complex HTML.

Bulk Operations

For creating many posts, use a loop with verification:

bash
while 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.5done < posts.csv

Always create as draft first, review, then bulk-publish.

來源與署名

來源:jezweb/claude-skills位於plugins/wordpress/skills/wordpress-content提交64965d9

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架