Claude CodeでWordPressプラグイン開発を始める
Claude CodeにWordPressのプラグインヘッダー仕様を渡し、最小構成のPHPファイルからフック実装まで作らせる手順を、必須項目に沿ってまとめます。
WordPressのプラグインは、最小構成であればPHPファイル1つとヘッダーコメントだけで成立します。この仕様はWordPressのPlugin Handbookに定義されていて、Claude Codeに渡すとそのままコードとして再現できる粒度です。以下では必須項目を起点に、Claude Codeに何を指示すればプラグインの骨格が組めるかを扱います。
Claude CodeでWordPressプラグインを作るとは
Claude CodeでWordPressプラグインを作るとは、WordPressのサイト機能を拡張するPHPコードを、Claude Codeに読み書きさせながら組み立てる作業を指します。ここでいうプラグインはWordPress側の概念で、Claude Code自体にSkillやMCPサーバーを追加する「プラグイン」機能とは別物です。両者は名前が同じなだけで、扱うファイルも設置場所もまったく異なります。
Claude Codeはカレントディレクトリのファイルを読み書きするコーディングエージェントです。WordPressのwp-content/plugins配下に作業ディレクトリを合わせれば、PHPファイルの生成や既存プラグインの改修をそのまま任せられます。事前に必要なのはWordPress環境(ローカルでもレンタルサーバーでも可)とClaude Codeのセットアップだけで、PHPの詳細な文法知識までは前提になりません。Claude Codeを未導入の場合はClaude Code install完全ガイドにOS別の手順があります。
最小構成のプラグインをClaude Codeに書かせる
プラグインとして認識される最低条件は、PHPファイルにWordPress形式のヘッダーコメントを含めることだけです。最小構成ではPlugin Nameさえ書かれていれば、WordPressはそのファイルをプラグイン一覧に表示します。
作業ディレクトリを用意し、Claude Codeにヘッダーコメントの生成を頼む流れは次の通りです。
cd wp-content/plugins
mkdir my-first-plugin
cd my-first-plugin
claudeClaude Codeが起動したら、作りたいプラグインの概要とWordPressのヘッダー仕様を伝えます。
my-first-plugin.phpを作成して。WordPressのプラグインヘッダー
コメントとして、Plugin Name・Description・Version・
Requires at least・Requires PHP・Author・Licenseを含めた
最小限のPHPファイルにして。指示どおりに生成されると、次のようなファイルになります。
<?php
/*
* Plugin Name: My First Plugin
* Description: Claude Codeで組み立てた最小構成のプラグインです。
* Version: 0.1.0
* Requires at least: 6.4
* Requires PHP: 7.4
* Author: Your Name
* License: GPL v2 or later
*/このファイルを保存してWordPress管理画面の「プラグイン」一覧を開けば、一覧に表示され有効化できる状態になります。ヘッダーコメントは同じプラグインフォルダ内の1ファイルにだけ書く決まりです。複数のPHPファイルすべてに書き込むと、WordPressがどのファイルをプラグイン本体として扱うか判断できなくなります。
ヘッダーフィールドを仕様に合わせて充実させる
Plugin Name以外のフィールドは任意ですが、配布や審査を見据えるなら埋めておく価値があります。Plugin Handbookが挙げる主なフィールドは次の通りです。
| フィールド | 必須か | 役割 |
|---|---|---|
| Plugin Name | 必須か必須 | 役割プラグイン一覧に表示される名前 |
| Version | 必須か任意 | 役割現在のバージョン番号 |
| Requires at least | 必須か任意 | 役割動作する最低WordPressバージョン |
| Requires PHP | 必須か任意 | 役割動作する最低PHPバージョン |
| License / License URI | 必須か任意(推奨) | 役割ライセンスの短縮名とその全文へのリンク |
| Text Domain | 必須か任意 | 役割翻訳文字列を紐づけるgettextドメイン |
| Update URI | 必須か任意 | 役割同名プラグインからの誤上書きを防ぐ識別子 |
ほかにもPlugin URIやAuthor URI、複数プラグインへの依存を示すRequires Pluginsなどが定義されています。ライセンスはWordPressコア本体との互換性を保つため、GPLv2以降と互換性のあるライセンスを選ぶことが推奨されています。
フックで機能を追加する
ヘッダーコメントだけのファイルは、WordPressに存在を認識させる器にすぎません。実際の機能はフック(アクションとフィルター)を通じて追加します。アクションはWordPressの動作に処理を追加・変更するためのもの、フィルターは表示前のコンテンツを書き換えるためのものです。プラグイン開発でまず使う基本フックは3つです。有効化時に走るregister_activation_hook()、無効化時に走るregister_deactivation_hook()、削除時に走るregister_uninstall_hook()があります。
Claude Codeにフックの実装を頼むときは、どのタイミングで何をするかを具体的に伝えます。
register_activation_hook()を使って、有効化時に
wp_optionsテーブルへデフォルト設定を1件追加する
処理を追加して。無効化時に一時データを消す
register_deactivation_hook()も合わせて実装して。独自のフックポイントをdo_action()で公開すれば、ほかの開発者が自分のプラグインからこのプラグインの動作を拡張できるようになります。逆に既存のフックへ登録された処理をremove_action()で外すときは、登録時と同じ優先度を指定する必要があり、優先度がずれると意図しない関数まで残ってしまいます。
車輪の再発明を避けたい場面では、WordPressが用意するAPI群も選択肢になります。設定値の保存にはOptions API、外部通信にはHTTP APIが使え、フック自体の使い方はPlugin APIにまとまっています。Claude Codeにこれらの名前を伝えれば、対応する関数を踏まえた実装を提案させやすくなります。
1ファイル構成とフォルダ構成のどちらを選ぶか
WordPressはpluginsフォルダとそのサブフォルダを走査して、ヘッダーコメント付きのPHPファイルを探します。プラグイン全体が1つのPHPファイルで完結するなら、Hello Dollyのようにpluginsフォルダ直下に単体ファイルを置くだけでも認識されます。ただし複数のPHPファイルや画像・CSSを伴う一般的なプラグインでは、プラグイン名を付けた専用フォルダの中にファイルをまとめるのが想定されている構成です。Claude Codeに新規プラグインを作らせる際も、最初にどちらの構成にするかを伝えておくと、後から複数ファイルへ分割するときの手戻りを減らせます。
Claude Codeに任せる作業の向き不向き
WordPressプラグイン開発の中でも、Claude Codeが得意な作業と人の判断が要る作業は分かれます。
| 作業 | 向き不向き | 理由 |
|---|---|---|
| ヘッダーコメントの生成 | 向き不向き向いている | 理由仕様が明文化された定型フォーマット |
| アクション・フィルターの雛形実装 | 向き不向き向いている | 理由関数シグネチャが決まっている |
| WordPress APIの選定提案 | 向き不向き向いている | 理由Options API・HTTP APIなど名前を伝えれば調査できる |
| ライセンス・配布方針の最終判断 | 向き不向き人の確認が要る | 理由GPL互換性やWordPress.orgの審査基準に関わる |
| 本番サイトでの有効化・動作確認 | 向き不向き人の確認が要る | 理由実際の管理画面操作とテーマ・他プラグインとの組み合わせ確認が必要 |
プロジェクト規約はCLAUDE.mdに書いておく
複数ファイルにまたがるプラグインを育てていくなら、CLAUDE.mdが役立ちます。ライセンスの方針やText Domainの命名規則、コーディング規約を書いておくと、Claude Codeが毎回同じ前提を踏まえたコードを書きやすくなります。CLAUDE.mdはClaude Code起動時にカレントディレクトリから自動で読み込まれる設定ファイルで、書き方の具体例はCLAUDE.mdを実用に引き上げる10のパターンにまとまっています。
生成されたコードを1件ずつ確認しながら進めたい場合と、レビュー済みの変更を一気に反映したい場合とでは、Claude Codeの権限モードを使い分けると効率が変わります。起動時のモード指定はClaude Codeの--permission-modeで起動モードを指定するで扱ったacceptEditsが、ヘッダーコメントやフックの雛形のような反復編集に向いています。
プラグインにAI機能(問い合わせ内容の要約やコンテンツ提案など)を組み込み、PHPから直接Claude APIを呼び出したい場合は、PHP SDKの動作要件がPHP 8.1以上である点に注意が必要です。WordPress自体はRequires PHPをもっと低いバージョンに設定できるため、SDKを使う機能だけPHPバージョンの前提がずれることがあります。詳細はClaude PHP SDKの値オブジェクトとバージョン運用で確認できます。
よくあるつまずき
- ヘッダーコメントを複数ファイルに書いてしまう: WordPressはプラグインフォルダを走査してヘッダーコメントを探すため、1つのプラグインには1ファイルだけに書きます。複数のPHPファイルに同じヘッダーを重複させると、どちらが本体か判断できなくなります。
- Text Domainを設定し忘れる: 翻訳文字列をText Domainに紐づけていないと、後から多言語対応を追加する際に文字列を洗い出す作業が発生します。
- バージョン番号の桁を揃えない: 前述の通り
version_compare()は文字列としての比較ではなく、ピリオド区切りの各セグメントを比較します。1.2と1.10のように桁数が変わる更新をする場合は、意図した大小関係になっているか事前に確認しておくと安全です。 - Update URIを設定しないまま公開する: プラグイン名が似た別のプラグインがWordPress.orgに存在すると、意図せず上書き更新されるリスクがあります。自分のサイトなど固有のURLを
Update URIに設定しておくと、このリスクを避けられます。 - ライセンスの互換性を確認しない: WordPressコアと組み合わせて配布する以上、GPLv2以降と互換性のないライセンスを選ぶと配布時に問題になります。
まとめ
Claude Codeは、WordPressが定めるヘッダーコメントの書式やフックの関数シグネチャのような、仕様が明文化された部分の実装を素早く形にできます。一方でライセンスの選定やWordPress.orgへの公開可否、本番サイトでの動作確認は、仕様を踏まえた人の判断が残ります。CLAUDE.mdにプロジェクト固有の規約を書き、権限モードを作業内容に合わせて切り替えれば、ヘッダーコメントからフック実装まで一貫した流れでプラグインを育てていけます。