🎯 このステップで作るもの

このステップでは、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ファイルだけです。

my-first-plugin/ ← プラグインフォルダ └── my-first-plugin.php ← メインPHPファイル

これだけで WordPress はプラグインとして認識します。ただし、プラグインとして認識されるには、ファイルの先頭に「プラグインヘッダー」を記述する必要があります。

✍️ プラグインヘッダーの書き方

プラグインヘッダーは、WordPressにプラグインの情報を伝えるコメント形式の記述です。my-first-plugin.phpの先頭に以下のコードを記述してください。

<?php /** * Plugin Name: My First Plugin * Plugin URI: https://example.com/my-first-plugin * Description: これは私が作った最初のプラグインです。 * Version: 1.0.0 * Author: あなたの名前 * Author URI: https://example.com * License: GPL2 * Text Domain: my-first-plugin */ // ここにプラグインのコードを書きます

各項目の説明

項目 必須 説明
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!」というメッセージを表示します。

<?php /** * Plugin Name: My First Plugin * Description: これは私が作った最初のプラグインです。 * Version: 1.0.0 * Author: あなたの名前 */ // 管理画面に通知を表示する関数 function mfp_admin_notice() { echo '<div class="notice notice-success">'; echo '<p>Hello from my plugin!</p>'; echo '</div>'; } // admin_notices フックに関数を登録 add_action( 'admin_notices', 'mfp_admin_notice' );

コードの解説

このコードを保存して、WordPress管理画面をリロードすると、画面上部に緑色の通知が表示されます!

💡 関数名の接頭辞について

mfp_admin_noticeのように、関数名に接頭辞(mfp)を付けるのは、他のプラグインやテーマとの名前の衝突を避けるためです。接頭辞はプラグイン名の略称を使うのが一般的です。

🔄 有効化・無効化フックとは

プラグインが有効化・無効化されたときに実行される処理を定義できます。初期設定やクリーンアップ処理に使います。

有効化フック

プラグインが有効化されたときに1度だけ実行されます。データベースのテーブル作成や初期設定に使います。

// 有効化時に実行される関数 function mfp_activate() { // オプションに値を保存 add_option( 'mfp_activated_time', current_time( 'mysql' ) ); // ログに記録(デバッグ用) error_log( 'My First Plugin が有効化されました' ); } // 有効化フックに登録 register_activation_hook( __FILE__, 'mfp_activate' );

無効化フック

プラグインが無効化されたときに実行されます。一時ファイルの削除などに使います。

// 無効化時に実行される関数 function mfp_deactivate() { // オプションを削除 delete_option( 'mfp_activated_time' ); // ログに記録 error_log( 'My First Plugin が無効化されました' ); } // 無効化フックに登録 register_deactivation_hook( __FILE__, 'mfp_deactivate' );

⚠️ アンインストールフックとの違い

無効化は一時的な停止、アンインストールは完全な削除です。無効化フックでは、ユーザーデータやオプションを削除しないようにしましょう。データの完全削除は、アンインストール時に行います(後のステップで学びます)。

📝 完全版のコード

ここまでの内容をまとめた完全なコードです。my-first-plugin.phpにコピーして使ってください。

<?php /** * Plugin Name: My First Plugin * Plugin URI: https://example.com/my-first-plugin * Description: これは私が作った最初のプラグインです。管理画面にメッセージを表示します。 * Version: 1.0.0 * Author: あなたの名前 * Author URI: https://example.com * License: GPL2 * Text Domain: my-first-plugin */ // 直接アクセスを防ぐ if ( ! defined( 'ABSPATH' ) ) { exit; } // 管理画面に通知を表示する関数 function mfp_admin_notice() { echo '<div class="notice notice-success">'; echo '<p>🎉 Hello from my plugin!</p>'; echo '</div>'; } add_action( 'admin_notices', 'mfp_admin_notice' ); // 有効化時に実行される関数 function mfp_activate() { add_option( 'mfp_activated_time', current_time( 'mysql' ) ); error_log( 'My First Plugin が有効化されました' ); } register_activation_hook( __FILE__, 'mfp_activate' ); // 無効化時に実行される関数 function mfp_deactivate() { delete_option( 'mfp_activated_time' ); error_log( 'My First Plugin が無効化されました' ); } register_deactivation_hook( __FILE__, 'mfp_deactivate' );

💡 セキュリティ対策

冒頭の 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フォルダの名前を変更して一時的に無効化し、エラーを修正

✏️ 演習:自分のプラグインを作ってみよう

学んだことを活かして、自分だけのプラグインを作ってみましょう。

📝 課題

以下の要件を満たすプラグインを作成してください:

  1. プラグイン名を「My Awesome Plugin」にする
  2. 自分の名前を Author に設定する
  3. 管理画面に「このプラグインは〇〇が作成しました」というメッセージを表示する
  4. 有効化時にログに「プラグインが有効化されました」と記録する

💡 ヒント

このページのコードをベースに、プラグイン名やメッセージを変更してみましょう。接頭辞は「map」(My Awesome Plugin の略)を使うといいでしょう。

✅ 次のステップに進む前のチェックリスト

  • プラグインフォルダとファイルを作成できた
  • プラグインヘッダーの役割を理解した
  • WordPress管理画面でプラグインが表示された
  • プラグインを有効化・無効化できた
  • 管理画面にメッセージを表示できた
  • 有効化・無効化フックの使い方を理解した
  • セキュリティ対策(ABSPATH チェック)を理解した
  • 演習問題に取り組んだ