wordpress-content
WordPress サイトに対してブログ投稿の公開・ページの更新・メディアのアップロード・カテゴリやタグの管理・ナビゲーションメニューの編集・投稿の予約投稿・一括コンテンツ操作などを、WP-CLI または REST API を通じて実行します。ユーザーが WordPress 上のコンテンツを作成・管理したい場面で幅広く活用できます。
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.
SKILL.md 本文
WordPress コンテンツ
WordPress コンテンツを作成・更新・管理します — 投稿、ページ、メディア、カテゴリー、タグ、メニューを対象とします。WP-CLI または REST API 経由でサイト上にライブコンテンツを生成します。
前提条件
- 動作する WP-CLI SSH 接続または REST API 認証情報 (wordpress-setup スキルを使用)
wordpress.config.jsonまたはwp-cli.ymlからのサイト設定
ワークフロー
ステップ 1: 操作を決定する
| タスク | ベストな方法 |
|---|---|
| 単一の投稿またはページを作成/編集 | WP-CLI wp post create/update |
| 大量の投稿を作成 | WP-CLI ループまたは REST API バッチ |
| 画像/メディアをアップロード | WP-CLI wp media import |
| カテゴリー/タグを管理 | WP-CLI wp term |
| ナビゲーション メニューを更新 | WP-CLI wp menu |
| スケジュール投稿 | WP-CLI と --post_date を使用 |
| 複雑な HTML コンテンツ | 一時ファイルに書き込み、WP-CLI に渡す |
| SSH アクセスが利用不可 | Application Password による REST API |
ステップ 2: コンテンツを作成する
ブログ投稿
# シンプルな投稿
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
# HTML ファイルからの投稿(長いコンテンツに最適)
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"
投稿ステータス: draft, publish, pending, future (--post_date と共に使用)
ページ
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
スケジュール投稿
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"
ステップ 3: メディアをアップロードする
# URL からアップロード
wp @site media import "https://example.com/image.jpg" \
--title="Product Photo" \
--alt="Product front view" \
--caption="Our latest product"
# ローカル ファイルからアップロード(リモートサイトは SCP が必要)
scp ./image.jpg user@host:/tmp/image.jpg
wp @site media import /tmp/image.jpg --title="Local Upload"
# インポートと一度に設定画像として設定
wp @site media import "https://example.com/hero.jpg" \
--title="Hero" --featured_image --post_id={id}
# メディアを一覧表示
wp @site post list --post_type=attachment --fields=ID,post_title,guid
# サムネイルを再生成
wp @site media regenerate --yes
投稿に設定画像を設定:
# インポート出力から添付ファイル ID を取得し、その後:
wp @site post meta update {post_id} _thumbnail_id {attachment_id}
ステップ 4: 分類法を管理する
カテゴリー
# カテゴリーを一覧表示
wp @site term list category --fields=term_id,name,slug,count
# カテゴリーを作成
wp @site term create category "News" --slug=news --description="Company news and updates"
# 子カテゴリーを作成
wp @site term create category "Product News" --slug=product-news --parent=5
# カテゴリーを更新
wp @site term update category {term_id} --name="Updated Name"
# 投稿にカテゴリーを割り当て
wp @site post term add {post_id} category news
タグ
# タグを一覧表示
wp @site term list post_tag --fields=term_id,name,slug,count
# タグを作成
wp @site term create post_tag "new-tag"
# 投稿作成中にタグを追加
wp @site post create --post_title="..." --tags_input="seo,marketing,tips"
# 既存の投稿にタグを追加
wp @site post term add {post_id} post_tag seo marketing tips
ステップ 5: メニューを管理する
# メニューを一覧表示
wp @site menu list --fields=term_id,name,slug,count
# メニュー内のアイテムを一覧表示
wp @site menu item list main-menu --fields=db_id,type,title,link,position
# ページをメニューに追加
wp @site menu item add-post main-menu {page_id} --title="About Us"
# カスタム リンクを追加
wp @site menu item add-custom main-menu "Contact" "https://example.com/contact/"
# カテゴリー アーカイブをメニューに追加
wp @site menu item add-term main-menu category {term_id}
# 並べ替え(位置を設定)
wp @site menu item update {item_id} --position=3
# メニュー アイテムを削除
wp @site menu item delete {item_id}
ステップ 6: 既存コンテンツを更新する
# 投稿タイトルとコンテンツを更新
wp @site post update {post_id} \
--post_title="Updated Title" \
--post_content="<p>New content.</p>"
# ファイルから更新
wp @site post update {post_id} ./updated-content.html
# 投稿を検索
wp @site post list --s="search term" --fields=ID,post_title
# ステータスを一括更新
wp @site post list --post_type=post --post_status=draft --field=ID | \
xargs -I {} wp @site post update {} --post_status=publish
# 削除(ゴミ箱へ)
wp @site post delete {post_id}
# 完全に削除
wp @site post delete {post_id} --force
ステップ 7: 投稿メタおよびカスタム フィールド
# 投稿のすべてのメタを取得
wp @site post meta list {post_id} --fields=meta_key,meta_value
# 特定のメタを取得
wp @site post meta get {post_id} meta_key
# メタを設定
wp @site post meta update {post_id} meta_key "meta_value"
# メタを追加(重複を許可)
wp @site post meta add {post_id} meta_key "meta_value"
# メタを削除
wp @site post meta delete {post_id} meta_key
ACF はフィールド値と参照キー(_field_name -> field_abc123)の両方でフィールドを保存します。
ステップ 8: 検索と置換
# ドライ ラン を実行(常に実行)
wp @site search-replace "old text" "new text" --dry-run
# 実行
wp @site search-replace "old text" "new text" --precise
# 特定のテーブルに制限
wp @site search-replace "old" "new" wp_posts --precise
# 特定の列に制限
wp @site search-replace "old" "new" wp_posts post_content --precise
ステップ 9: エクスポートとインポート
# すべてのコンテンツをエクスポート
wp @site export --dir=/tmp/
# 特定の投稿タイプをエクスポート
wp @site export --post_type=post --dir=/tmp/
# インポート
wp @site import /path/to/file.xml --authors=mapping.csv
ステップ 10: 確認
# 投稿を確認
wp @site post get {post_id} --fields=ID,post_title,post_status,guid
# ライブ URL を取得
wp @site post get {post_id} --field=guid
# 最近の投稿を一覧表示
wp @site post list --post_type=post --posts_per_page=5 --fields=ID,post_title,post_status,post_date
管理 URL とライブ URL を提供します:
- 管理:
https://example.com/wp-admin/post.php?post={id}&action=edit - ライブ:
https://example.com/{slug}/
REST API リファレンス
WP-CLI が利用できない場合は、Application Password 認証を使用して WordPress REST API を使用します。
認証
# 認証情報を Base64 エンコード
AUTH=$(echo -n "username:xxxx xxxx xxxx xxxx xxxx xxxx" | base64)
# リクエストで使用
curl -s https://example.com/wp-json/wp/v2/posts \
-H "Authorization: Basic $AUTH" \
-H "Content-Type: application/json"
エンドポイント
| リソース | エンドポイント |
|---|---|
| 投稿 | /wp-json/wp/v2/posts |
| ページ | /wp-json/wp/v2/pages |
| メディア | /wp-json/wp/v2/media |
| カテゴリー | /wp-json/wp/v2/categories |
| タグ | /wp-json/wp/v2/tags |
すべて GET(一覧/単一)、POST(作成)、PUT(更新)、DELETE をサポートします。
REST 経由で投稿を作成
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}'
REST 経由でページを作成
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
}'
REST 経由でメディアをアップロード
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}'
REST 経由でカテゴリーを作成
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"}'
クエリ パラメーター
| パラメーター | 目的 | 例 |
|---|---|---|
per_page | ページあたりの結果数(最大 100) | ?per_page=50 |
page | ページネーション | ?page=2 |
search | 検索用語 | ?search=keyword |
status | ステータスでフィルター | ?status=draft |
categories | カテゴリー ID でフィルター | ?categories=3 |
orderby | ソート フィールド | ?orderby=date |
order | ソート方向 | ?order=desc |
_fields | レスポンス フィールドを制限 | ?_fields=id,title,link |
メニュー: ナビゲーション メニューには REST API サポートが限定されます。/wp-json/wp/v2/navigation エンドポイントは FSE テーマのブロックベース ナビゲーション用に存在します。クラシック メニューでは WP-CLI を使用してください。
重要なパターン
WP-CLI での HTML コンテンツ
1 文以上の場合は、HTML を一時ファイルに書き込み、渡します:
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_content でのシェル クォートは複雑な HTML では不安定です。
大量操作
多くの投稿を作成する場合は、検証ありのループを使用します:
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.5
done < posts.csv
常に draft として作成し、レビュー後、大量公開してください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- jezweb
- リポジトリ
- jezweb/claude-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/jezweb/claude-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。