最小構成プラグインを作る
実際に動く最もシンプルなプラグイン「Hello World」を作成します。プラグインの基本的なファイル構成、ヘッダーの記述、有効化・無効化フックの使い方を学びましょう。
🎯 このステップで作るもの
このステップでは、WordPress管理画面に「Hello from my plugin!」というメッセージを表示するだけのシンプルなプラグインを作成します。機能は最小限ですが、プラグインの基本構造を理解するには最適です。
💡 学べること
- プラグインファイルの作成方法
- プラグインヘッダーの書き方
- WordPressがプラグインを認識する仕組み
- 有効化・無効化フックの使い方
- 管理画面に通知を表示する方法
📁 プラグインの保存場所
すべてのプラグインは、WordPressのwp-content/plugins/ディレクトリに保存します。
ステップ1: プラグインフォルダを作成
Local by Flywheel で作成したサイトのフォルダを開き、以下の場所に移動します:
app/public/wp-content/plugins/
この中にmy-first-pluginという名前のフォルダを作成してください。
ステップ2: メインPHPファイルを作成
my-first-pluginフォルダの中に、my-first-plugin.phpという名前のファイルを作成します。
Visual Studio Code でこのファイルを開きましょう。
💡 フォルダ名とファイル名のルール
プラグインフォルダ名とメインPHPファイル名は、同じ名前にするのが一般的です。また、スペースは使わず、ハイフン(-)またはアンダースコア(_)で区切ります。
良い例: my-plugin, contact-form, seo-optimizer
悪い例: My Plugin, ContactForm, SEO Optimizer
📄 最小限必要なファイル構成
最もシンプルなプラグインに必要なのは、たった1つのPHPファイルだけです。
これだけで WordPress はプラグインとして認識します。ただし、プラグインとして認識されるには、ファイルの先頭に「プラグインヘッダー」を記述する必要があります。
✍️ プラグインヘッダーの書き方
プラグインヘッダーは、WordPressにプラグインの情報を伝えるコメント形式の記述です。my-first-plugin.phpの先頭に以下のコードを記述してください。
各項目の説明
| 項目 | 必須 | 説明 |
|---|---|---|
| Plugin Name | ✅ 必須 | プラグインの名前。管理画面のプラグイン一覧に表示されます。 |
| Plugin URI | 任意 | プラグインの詳細情報ページのURL。自分のサイトや GitHub のURLを記載します。 |
| Description | 任意 | プラグインの簡単な説明。何ができるかを1〜2文で記述します。 |
| Version | 推奨 | プラグインのバージョン番号。通常は 1.0.0 から始めます。 |
| Author | 任意 | プラグイン作成者の名前。 |
| Author URI | 任意 | 作成者のWebサイトURL。 |
| License | 推奨 | ライセンス。WordPress公式ディレクトリに登録する場合はGPL2またはGPL3が必要です。 |
| Text Domain | 推奨 | 翻訳用のテキストドメイン。通常はプラグインフォルダ名と同じにします。 |
⚠️ 重要な注意点
プラグインヘッダーは必ずPHPの開始タグ(<?php)の直後に記述してください。途中に空行やコードがあると、WordPressが正しく認識できません。
✅ WordPress管理画面での確認
ここまでのコードを保存したら、WordPress管理画面で確認してみましょう。
ステップ1: プラグイン一覧を開く
WordPress管理画面にログインして、左メニューの「プラグイン」→「インストール済みプラグイン」をクリックします。
ステップ2: 自分のプラグインを探す
プラグイン一覧に「My First Plugin」が表示されているはずです。プラグインヘッダーで設定した説明文や作成者名も表示されます。
ステップ3: 有効化してみる
「有効化」リンクをクリックすると、プラグインが有効になります。まだ何も機能を実装していないので、見た目に変化はありません。
💡 プラグインが表示されない場合
以下の点を確認してください:
- ファイルが正しい場所(wp-content/plugins/my-first-plugin/)に保存されているか
- プラグインヘッダーが正しく記述されているか
- PHPの開始タグ(<?php)があるか
- Plugin Name が記述されているか
⚙️ 簡単な機能を追加してみよう
プラグインが認識されることを確認したら、簡単な機能を追加してみましょう。管理画面に「Hello from my plugin!」というメッセージを表示します。
コードの解説
mfp_admin_notice():管理画面に通知を表示する関数を定義echo:HTMLを出力するPHPの命令add_action():WordPressのフックに関数を登録'admin_notices':管理画面の上部に通知を表示するタイミング
このコードを保存して、WordPress管理画面をリロードすると、画面上部に緑色の通知が表示されます!
💡 関数名の接頭辞について
mfp_admin_noticeのように、関数名に接頭辞(mfp)を付けるのは、他のプラグインやテーマとの名前の衝突を避けるためです。接頭辞はプラグイン名の略称を使うのが一般的です。
🔄 有効化・無効化フックとは
プラグインが有効化・無効化されたときに実行される処理を定義できます。初期設定やクリーンアップ処理に使います。
有効化フック
プラグインが有効化されたときに1度だけ実行されます。データベースのテーブル作成や初期設定に使います。
無効化フック
プラグインが無効化されたときに実行されます。一時ファイルの削除などに使います。
⚠️ アンインストールフックとの違い
無効化は一時的な停止、アンインストールは完全な削除です。無効化フックでは、ユーザーデータやオプションを削除しないようにしましょう。データの完全削除は、アンインストール時に行います(後のステップで学びます)。
📝 完全版のコード
ここまでの内容をまとめた完全なコードです。my-first-plugin.phpにコピーして使ってください。
💡 セキュリティ対策
冒頭の if ( ! defined( 'ABSPATH' ) ) { exit; } は、このファイルに直接アクセスされるのを防ぐセキュリティ対策です。すべてのプラグインファイルに記述することをおすすめします。
🔧 よくあるエラーと対処法
プラグインが一覧に表示されない
原因:ファイルの保存場所が間違っている、またはプラグインヘッダーが正しくない
対処法:
- ファイルが
wp-content/plugins/my-first-plugin/my-first-plugin.phpにあるか確認 - Plugin Name が記述されているか確認
- PHPの開始タグ(<?php)があるか確認
「Headers already sent」エラー
原因:PHPの開始タグの前に空行や文字がある
対処法:ファイルの先頭が <?php で始まっているか確認。BOM(バイトオーダーマーク)が入っている場合もあるので、エディタの設定を確認
プラグインを有効化すると画面が真っ白
原因:PHPの構文エラー
対処法:FTPでファイルを削除するか、wp-content/plugins/my-first-pluginフォルダの名前を変更して一時的に無効化し、エラーを修正
✏️ 演習:自分のプラグインを作ってみよう
学んだことを活かして、自分だけのプラグインを作ってみましょう。
📝 課題
以下の要件を満たすプラグインを作成してください:
- プラグイン名を「My Awesome Plugin」にする
- 自分の名前を Author に設定する
- 管理画面に「このプラグインは〇〇が作成しました」というメッセージを表示する
- 有効化時にログに「プラグインが有効化されました」と記録する
💡 ヒント
このページのコードをベースに、プラグイン名やメッセージを変更してみましょう。接頭辞は「map」(My Awesome Plugin の略)を使うといいでしょう。
✅ 次のステップに進む前のチェックリスト
- プラグインフォルダとファイルを作成できた
- プラグインヘッダーの役割を理解した
- WordPress管理画面でプラグインが表示された
- プラグインを有効化・無効化できた
- 管理画面にメッセージを表示できた
- 有効化・無効化フックの使い方を理解した
- セキュリティ対策(ABSPATH チェック)を理解した
- 演習問題に取り組んだ