Skip to main content

wordpress-content

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.

소스 정보

저장소
jezweb/claude-skills
최근 소스 활동
2026년 5월 13일 10:26
감지된 SKILL.md 언어
영어
스타
1,058
포크
107

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
wordpress-content
description
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.
compatibility
claude-code-only
# 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 | Task | Best Method | |------|-------------| | Create/edit single post or page | WP-CLI `wp post create/update` | | Bulk create posts | WP-CLI loop or REST API batch | | Upload images/media | WP-CLI `wp media import` | | Manage categories/tags | WP-CLI `wp term` | | Update navigation menus | WP-CLI `wp menu` | | Scheduled posts | WP-CLI with `--post_date` | | Complex HTML content | Write to temp file, pass to WP-CLI | | No SSH access available | REST API with Application Password | ### Step 2: Create Content #### Blog Posts ```bash # 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" ``` **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 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" # Import and set as featured image in one step wp @site media import "https://example.com/hero.jpg" \ --title="Hero" --featured_image --post_id={id} # List media wp @site post list --post_type=attachment --fields=ID,post_title,guid # Regenerate thumbnails wp @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 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 # Update category wp @site term update category {term_id} --name="Updated Name" # Assign category to post wp @site post term add {post_id} category news ``` #### Tags ```bash # List tags wp @site term list post_tag --fields=term_id,name,slug,count # Create tag wp @site term create post_tag "new-tag" # 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 ``` ### Step 5: Manage Menus ```bash # 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,position # 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/" # Add category archive to menu wp @site menu item add-term main-menu category {term_id} # Reorder (set position) wp @site menu item update {item_id} --position=3 # Delete menu item wp @site menu item delete {item_id} ``` ### Step 6: Update Existing Content ```bash # 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 # Search posts wp @site post list --s="search term" --fields=ID,post_title # Bulk update status wp @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 permanently wp @site post delete {post_id} --force ``` ### Step 7: Post Meta and Custom Fields ```bash # Get all meta for a post wp @site post meta list {post_id} --fields=meta_key,meta_value # Get specific meta wp @site post meta get {post_id} meta_key # Set meta wp @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 meta wp @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 — always wp @site search-replace "old text" "new text" --dry-run # Execute wp @site search-replace "old text" "new text" --precise # Limit to specific table wp @site search-replace "old" "new" wp_posts --precise # Limit to specific column wp @site search-replace "old" "new" wp_posts post_content --precise ``` ### Step 9: Export and Import ```bash # Export all content wp @site export --dir=/tmp/ # Export specific post type wp @site export --post_type=post --dir=/tmp/ # Import wp @site import /path/to/file.xml --authors=mapping.csv ``` ### Step 10: Verify ```bash # 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_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 credentials AUTH=$(echo -n "username:xxxx xxxx xxxx xxxx xxxx xxxx" | base64) # Use in requests curl -s https://example.com/wp-json/wp/v2/posts \ -H "Authorization: Basic $AUTH" \ -H "Content-Type: application/json" ``` ### Endpoints | Resource | Endpoint | |----------|----------| | 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 | Parameter | Purpose | Example | |-----------|---------|---------| | `per_page` | Results per page (max 100) | `?per_page=50` | | `page` | Pagination | `?page=2` | | `search` | Search term | `?search=keyword` | | `status` | Filter by status | `?status=draft` | | `categories` | Filter by category ID | `?categories=3` | | `orderby` | Sort field | `?orderby=date` | | `order` | Sort direction | `?order=desc` | | `_fields` | Limit 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 ```
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기