wordpress-dev
WordPressのテーマやプラグイン開発において、コーディング規約、カスタム投稿タイプ、セキュリティ、パフォーマンス、フック/フィルター、テンプレート階層など、ベストプラクティスに基づいた開発を支援するSkill。
📜 元の英語説明(参考)
WordPress development best practices - coding standards, custom post types, security, performance, hooks/filters, and template hierarchy. Use for any WordPress theme or plugin development guidance.
🇯🇵 日本人クリエイター向け解説
WordPressのテーマやプラグイン開発において、コーディング規約、カスタム投稿タイプ、セキュリティ、パフォーマンス、フック/フィルター、テンプレート階層など、ベストプラクティスに基づいた開発を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o wordpress-dev.zip https://jpskill.com/download/18123.zip && unzip -o wordpress-dev.zip && rm wordpress-dev.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/18123.zip -OutFile "$d\wordpress-dev.zip"; Expand-Archive "$d\wordpress-dev.zip" -DestinationPath $d -Force; ri "$d\wordpress-dev.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
wordpress-dev.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
wordpress-devフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 2
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
WordPress開発のベストプラクティス
2025年の標準に準拠したWordPressテーマおよびプラグインの包括的な開発ガイダンスです。
このSkillで提供されるもの
- Coding Standards - WordPress標準に準拠したPHP、JS、CSSの規約
- Custom Post Types - 完全なCPT登録および管理ガイド
- Security - サニタイズ、エスケープ、nonce、capabilityチェック
- Performance - キャッシュ、クエリ最適化、アセットの読み込み
- Hooks & Filters - アクションとフィルターのリファレンス(例付き)
- Template Hierarchy - テーマのテンプレート構造とオーバーライド
クイックリファレンス
すべきこと
- WordPress APIを使用する(車輪の再発明をしない)
- すべての入力をサニタイズする(
sanitize_*関数) - すべての出力をエスケープする(
esc_*関数) - SQLにはプリペアドステートメントを使用する(
$wpdb->prepare) - スクリプト/スタイルを適切にエンキューする(
wp_enqueue_*) - コストのかかる処理にはtransientsを使用する
- テンプレート階層に従う
- コアを修正する代わりにフックを使用する
- すべての関数、クラス、グローバル変数のプレフィックスを設定する
- 自動化タスクにはWP-CLIを使用する
すべきでないこと
- WordPressコアファイルを修正しない(絶対に)
query_posts()を使用しない - 代わりにWP_Queryを使用する- エスケープせずに信頼できないデータを出力しない
- 機密データをプレーンテキストオプションに保存しない
- 信頼できないデータに対して
extract()を使用しない @演算子でエラーを抑制しない- 非推奨の関数を使用しない
- URLまたはファイルパスをハードコードしない
- フォームでnonce検証をスキップしない
mysql_*関数を使用しない -$wpdbを使用する
ドキュメント
詳細なドキュメントは/docs/にあります。
| ファイル | 内容 |
|---|---|
| coding-standards.md | PHP、JS、CSSの命名規則とフォーマット |
| custom-post-types.md | CPTの登録、ラベル、capability |
| security.md | 入出力処理、nonce、SQLの安全性 |
| performance.md | キャッシュ、最適化、遅延読み込み |
| hooks-filters.md | 一般的なアクション/フィルター(例付き) |
| template-hierarchy.md | テンプレートファイルとオーバーライド |
コードテンプレート
すぐに使用できるテンプレートは/templates/にあります。
| テンプレート | 目的 |
|---|---|
custom-post-type.php |
CPT登録のボイラープレート |
taxonomy.php |
カスタムタクソノミーの登録 |
meta-box.php |
保存処理付きの管理メタボックス |
rest-api-endpoint.php |
カスタムREST APIエンドポイント |
plugin-skeleton/ |
完全なプラグインスターターファイル |
使用例
カスタム投稿タイプの作成
Claudeに聞いてください:
- "不動産用の'Property'カスタム投稿タイプを作成する"
- "写真フィールドを持つチームメンバー用のカスタム投稿タイプを追加する"
- "カスタムタクソノミーを持つ'Portfolio' CPTを登録する"
セキュリティレビュー
Claudeに聞いてください:
- "このフォームハンドラーのセキュリティ問題をレビューする"
- "このプラグインがWordPressのセキュリティベストプラクティスに従っているか確認する"
- "このコードに適切なサニタイズとエスケープを追加する"
パフォーマンス最適化
Claudeに聞いてください:
- "パフォーマンスを向上させるために、このWP_Queryを最適化する"
- "このコストのかかるデータベース操作にキャッシュを追加する"
- "このテーマのアセット読み込みをレビューする"
コード生成
scaffoldスクリプトを使用してボイラープレートを生成します。
# カスタム投稿タイプを生成する
python3 /root/.claude/skills/wordpress-dev/scripts/scaffold.py \
--type cpt \
--name "Property" \
--slug "property" \
--output /path/to/theme/inc/
# カスタムタクソノミーを生成する
python3 /root/.claude/skills/wordpress-dev/scripts/scaffold.py \
--type taxonomy \
--name "Property Type" \
--slug "property-type" \
--post-type "property" \
--output /path/to/theme/inc/
WordPress 6.x / ブロックテーマに関する注意
フルサイト編集 (FSE)
ブロックテーマの場合 (WordPress 6.0 以降):
theme/
├── theme.json # グローバルスタイルと設定
├── templates/ # ブロックテンプレート (HTML)
│ ├── index.html
│ ├── single.html
│ └── page.html
├── parts/ # ブロックテンプレートパーツ
│ ├── header.html
│ └── footer.html
└── patterns/ # ブロックパターン
└── hero.php
theme.json のベストプラクティス
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 2,
"settings": {
"color": {
"palette": [
{"slug": "primary", "color": "#1a1a1a", "name": "Primary"}
]
},
"typography": {
"fontFamilies": [
{"fontFamily": "Inter, sans-serif", "slug": "body", "name": "Body"}
]
},
"spacing": {
"units": ["px", "rem", "%"]
}
}
}
一般的なパターン
安全なデータベースクエリ
global $wpdb;
$results = $wpdb->get_results(
$wpdb->prepare(
"SELECT * FROM {$wpdb->posts} WHERE post_type = %s AND post_status = %s",
'property',
'publish'
)
);
AJAXハンドラー
// AJAXアクションを登録
add_action('wp_ajax_my_action', 'my_ajax_handler');
add_action('wp_ajax_nopriv_my_action', 'my_ajax_handler');
function my_ajax_handler() {
// nonceを検証
check_ajax_referer('my_nonce', 'security');
// capabilityをチェック
if (!current_user_can('edit_posts')) {
wp_send_json_error('Unauthorized', 403);
}
// 入力をサニタイズ
$data = sanitize_text_field($_POST['data']);
// 処理して応答
wp_send_json_success(['message' => 'Done']);
}
スクリプトを適切にエンキュー
function theme_enqueue_assets() {
// CSS
wp_enqueue_style(
'theme-style',
get_stylesheet_uri(),
[],
filemtime(get_stylesheet_directory() . '/style.css')
);
// JS(依存関係あり)
wp_enqueue_script(
'theme-main',
get_theme_file_uri('/assets/js/main.js'),
['jquery'],
filemtime(get_theme_file_path('/assets/js/main.js')),
true // フッターに配置
);
// AJAX用にローカライズ
wp_localize_script('theme-main', 'themeData', [
'ajaxUrl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('theme_nonce'),
]);
}
add_action('wp_enqueue_scripts', 'theme_enqueue_assets');
関連スキル
- wordpress-admin:
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
WordPress Development Best Practices
Comprehensive development guidance for WordPress themes and plugins following 2025 standards.
What This Skill Provides
- Coding Standards - PHP, JS, CSS conventions following WordPress standards
- Custom Post Types - Complete CPT registration and management guide
- Security - Sanitization, escaping, nonces, capability checks
- Performance - Caching, query optimization, asset loading
- Hooks & Filters - Actions and filters reference with examples
- Template Hierarchy - Theme template structure and overrides
Quick Reference
Do's
- Use WordPress APIs (don't reinvent the wheel)
- Sanitize all input (
sanitize_*functions) - Escape all output (
esc_*functions) - Use prepared statements for SQL (
$wpdb->prepare) - Enqueue scripts/styles properly (
wp_enqueue_*) - Use transients for expensive operations
- Follow the template hierarchy
- Use hooks instead of modifying core
- Prefix all functions, classes, and global variables
- Use WP-CLI for automation tasks
Don'ts
- Modify WordPress core files (NEVER)
- Use
query_posts()- useWP_Queryinstead - Echo untrusted data without escaping
- Store sensitive data in plain text options
- Use
extract()on untrusted data - Suppress errors with
@operator - Use deprecated functions
- Hard-code URLs or file paths
- Skip nonce verification on forms
- Use
mysql_*functions - use$wpdb
Documentation
Detailed documentation available in /docs/:
| File | Contents |
|---|---|
| coding-standards.md | PHP, JS, CSS naming and formatting |
| custom-post-types.md | CPT registration, labels, capabilities |
| security.md | Input/output handling, nonces, SQL safety |
| performance.md | Caching, optimization, lazy loading |
| hooks-filters.md | Common actions/filters with examples |
| template-hierarchy.md | Template files and overrides |
Code Templates
Ready-to-use templates in /templates/:
| Template | Purpose |
|---|---|
custom-post-type.php |
CPT registration boilerplate |
taxonomy.php |
Custom taxonomy registration |
meta-box.php |
Admin meta box with save handling |
rest-api-endpoint.php |
Custom REST API endpoint |
plugin-skeleton/ |
Complete plugin starter files |
Usage Examples
Create a Custom Post Type
Ask Claude:
- "Create a 'Property' custom post type for real estate"
- "Add a custom post type for team members with a photo field"
- "Register a 'Portfolio' CPT with custom taxonomies"
Security Review
Ask Claude:
- "Review this form handler for security issues"
- "Check if this plugin follows WordPress security best practices"
- "Add proper sanitization and escaping to this code"
Performance Optimization
Ask Claude:
- "Optimize this WP_Query for better performance"
- "Add caching to this expensive database operation"
- "Review asset loading for this theme"
Code Generation
Use the scaffold script to generate boilerplate:
# Generate a custom post type
python3 /root/.claude/skills/wordpress-dev/scripts/scaffold.py \
--type cpt \
--name "Property" \
--slug "property" \
--output /path/to/theme/inc/
# Generate a custom taxonomy
python3 /root/.claude/skills/wordpress-dev/scripts/scaffold.py \
--type taxonomy \
--name "Property Type" \
--slug "property-type" \
--post-type "property" \
--output /path/to/theme/inc/
WordPress 6.x / Block Theme Notes
Full Site Editing (FSE)
For block themes (WordPress 6.0+):
theme/
├── theme.json # Global styles and settings
├── templates/ # Block templates (HTML)
│ ├── index.html
│ ├── single.html
│ └── page.html
├── parts/ # Block template parts
│ ├── header.html
│ └── footer.html
└── patterns/ # Block patterns
└── hero.php
theme.json Best Practices
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 2,
"settings": {
"color": {
"palette": [
{"slug": "primary", "color": "#1a1a1a", "name": "Primary"}
]
},
"typography": {
"fontFamilies": [
{"fontFamily": "Inter, sans-serif", "slug": "body", "name": "Body"}
]
},
"spacing": {
"units": ["px", "rem", "%"]
}
}
}
Common Patterns
Safe Database Query
global $wpdb;
$results = $wpdb->get_results(
$wpdb->prepare(
"SELECT * FROM {$wpdb->posts} WHERE post_type = %s AND post_status = %s",
'property',
'publish'
)
);
AJAX Handler
// Register AJAX action
add_action('wp_ajax_my_action', 'my_ajax_handler');
add_action('wp_ajax_nopriv_my_action', 'my_ajax_handler');
function my_ajax_handler() {
// Verify nonce
check_ajax_referer('my_nonce', 'security');
// Check capability
if (!current_user_can('edit_posts')) {
wp_send_json_error('Unauthorized', 403);
}
// Sanitize input
$data = sanitize_text_field($_POST['data']);
// Process and respond
wp_send_json_success(['message' => 'Done']);
}
Enqueue Scripts Properly
function theme_enqueue_assets() {
// CSS
wp_enqueue_style(
'theme-style',
get_stylesheet_uri(),
[],
filemtime(get_stylesheet_directory() . '/style.css')
);
// JS with dependencies
wp_enqueue_script(
'theme-main',
get_theme_file_uri('/assets/js/main.js'),
['jquery'],
filemtime(get_theme_file_path('/assets/js/main.js')),
true // In footer
);
// Localize for AJAX
wp_localize_script('theme-main', 'themeData', [
'ajaxUrl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('theme_nonce'),
]);
}
add_action('wp_enqueue_scripts', 'theme_enqueue_assets');
Related Skills
- wordpress-admin: Page/post management, WP-CLI, REST API
- seo-optimizer: Yoast/Rank Math audit and optimization
- visual-qa: Screenshot testing with animation handling
- brand-guide: Brand documentation generation
Resources
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (6,947 bytes)
- 📎 scripts/scaffold.py (8,303 bytes)