「WordPressのプラグインって、自分でも作れるの?」と思ったことはありませんか?答えはYESです!PHPの基礎知識があれば、オリジナルのプラグインを作ることができます。この記事では、完全初心者向けに基本テンプレート(ひな形)を使いながら、プラグイン作成の流れをステップごとにやさしく解説します。
1. WordPressプラグインとは?
WordPressプラグインとは、WordPressの機能を拡張・追加するためのPHPプログラムのことです。お問い合わせフォーム、SEO対策、セキュリティ強化など、さまざまな目的のプラグインがWordPress公式ディレクトリに何万種類も公開されています。
プラグインの大きな特徴は、WordPressのコアファイルを直接編集せずに機能を追加できる点です。これにより、WordPressをアップデートしても追加した機能が失われません。
プラグインでできることの例
- 管理画面に独自のメニューページを追加する
- 投稿や固定ページにショートコードを追加する
- フロントエンドにカスタムCSSやJavaScriptを読み込む
- ウィジェットを追加する
- データベースにカスタムデータを保存・取得する
- 特定のアクションやフィルターをフックする
2. プラグイン作成に必要なもの
プラグインを作成する前に、以下の環境と知識を準備しましょう。
必要な環境
| 項目 | 内容 | 備考 |
|---|---|---|
| WordPressのローカル環境 | XAMPP / Local(旧Local by Flywheel)など | 本番環境での開発は避けること |
| テキストエディタ | VS Code / Sublime Text など | VS Code が初心者にもおすすめ |
| FTPクライアント(任意) | FileZilla など | 本番サーバーへのアップロード時に使用 |
| PHPの基礎知識 | 変数・関数・配列の基本 | 完全な初心者でも進めながら学べる |
必要な基礎知識
- PHP:プラグインはPHPで書かれています(必須)
- HTML / CSS:管理画面や出力部分を整えるために使います
- WordPress の基本用語:フック(アクション・フィルター)、ショートコードなど
3. 基本ファイル構成
WordPressプラグインは、最小構成では1つのPHPファイルだけで動作します。ただし、規模が大きくなる場合はフォルダを作成して整理します。
最小構成(1ファイル)
wp-content/
└── plugins/
└── my-first-plugin.php ← これだけでOK!
推奨構成(フォルダあり)
wp-content/
└── plugins/
└── my-first-plugin/ ← プラグインフォルダ
├── my-first-plugin.php ← メインファイル(フォルダと同じ名前)
├── includes/ ← 機能ごとのPHPファイルを入れる
├── css/ ← スタイルシート
├── js/ ← JavaScriptファイル
└── readme.txt ← プラグインの説明(公開時に必要)
⚠️ 注意:プラグインフォルダ名とメインファイル名は同じにするのが慣例です。また、フォルダ名・ファイル名はすべて半角英数字とハイフンのみ使用し、スペースは使わないようにしましょう。
4. プラグインの基本テンプレート(ひな形)
以下が、WordPressプラグインの基本ひな形です。このテンプレートをコピーして、必要な部分を書き換えるだけでプラグインの土台が完成します。
<?php
/**
* Plugin Name: My First Plugin
* Plugin URI: https://example.com/my-first-plugin
* Description: これは初心者向けのサンプルプラグインです。
* Version: 1.0.0
* Requires at least: 5.0
* Requires PHP: 7.4
* Author: あなたの名前
* Author URI: https://example.com
* License: GPL v2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: my-first-plugin
*/
// 直接アクセスを防止する(セキュリティ対策)
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// 定数の定義
define( 'MY_PLUGIN_VERSION', '1.0.0' );
define( 'MY_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'MY_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
// プラグイン有効化時の処理
function my_plugin_activate() {
// 初期設定やデータベーステーブルの作成などを行う
}
register_activation_hook( __FILE__, 'my_plugin_activate' );
// プラグイン無効化時の処理
function my_plugin_deactivate() {
// キャッシュのクリアなどを行う
}
register_deactivation_hook( __FILE__, 'my_plugin_deactivate' );
// メイン処理をここに追加していく
// 例: add_action( 'wp_enqueue_scripts', 'my_plugin_enqueue_scripts' );
5. ひな形の各部分を詳しく解説
① プラグインヘッダーコメント
ファイルの先頭にある /** ... */ の部分がプラグインヘッダーです。WordPressはここを読み取って、管理画面の「プラグイン一覧」にプラグイン情報を表示します。
| 項目 | 説明 | 必須 |
|---|---|---|
Plugin Name |
プラグインの名前(管理画面に表示される) | ✅ 必須 |
Plugin URI |
プラグインの公式ページURL | 任意 |
Description |
プラグインの説明文 | 任意 |
Version |
バージョン番号 | 任意(推奨) |
Author |
作者名 | 任意 |
License |
ライセンス(公開時はGPL推奨) | 公開時は必須 |
Text Domain |
翻訳用のテキストドメイン | 多言語対応時に必須 |
② 直接アクセス防止
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
このコードはセキュリティ上、必ず記述してください。ABSPATHはWordPressが定義する定数で、URLから直接PHPファイルにアクセスされた場合に処理を止めます。
③ 定数の定義
define( 'MY_PLUGIN_VERSION', '1.0.0' );
define( 'MY_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'MY_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
定数を定義しておくと、プラグイン内のどこからでも簡単にパスやバージョンを参照できます。
plugin_dir_path( __FILE__ ):プラグインフォルダのサーバー上のパス(ファイルの読み込みに使用)plugin_dir_url( __FILE__ ):プラグインフォルダのURL(CSSやJSの読み込みに使用)
④ 有効化・無効化フック
register_activation_hook( __FILE__, 'my_plugin_activate' );
register_deactivation_hook( __FILE__, 'my_plugin_deactivate' );
プラグインを「有効化」または「無効化」したときに特定の処理を実行できます。
| フック | タイミング | 主な用途 |
|---|---|---|
register_activation_hook |
プラグインを有効化したとき | 初期オプションの設定、DBテーブルの作成 |
register_deactivation_hook |
プラグインを無効化したとき | 一時データのクリア、スケジュールの削除 |
register_uninstall_hook |
プラグインを削除したとき | DBテーブルの削除、オプションの削除 |
6. 実践:シンプルなプラグインを作ってみよう
ひな形を使って、実際に動くシンプルなプラグインを作成しましょう。今回は「投稿の末尾に定型文を自動追加するプラグイン」を例にします。
Step 1:フォルダとファイルを作成する
- WordPressの
wp-content/plugins/フォルダを開く my-footer-textという名前のフォルダを作成する- フォルダの中に
my-footer-text.phpというファイルを作成する
Step 2:コードを書く
以下のコードを my-footer-text.php に貼り付けます。
<?php
/**
* Plugin Name: My Footer Text
* Description: 投稿の末尾に定型文を自動で追加するプラグイン
* Version: 1.0.0
* Author: あなたの名前
*/
// 直接アクセスを防止
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 投稿コンテンツの末尾に定型文を追加する
*
* @param string $content 投稿のコンテンツ
* @return string 定型文を追加したコンテンツ
*/
function my_footer_text_add_content( $content ) {
// 投稿ページのみに適用する
if ( is_single() && in_the_loop() && is_main_query() ) {
$footer_text = '<div class="my-footer-text">';
$footer_text .= '<p>この記事が役に立ったらシェアしてください!</p>';
$footer_text .= '</div>';
$content .= $footer_text;
}
return $content;
}
// 'the_content' フィルターにフック
add_filter( 'the_content', 'my_footer_text_add_content' );
Step 3:コードの解説
| コード | 説明 |
|---|---|
add_filter( 'the_content', ... ) |
投稿コンテンツを出力するタイミングで関数を実行する |
is_single() |
投稿の個別ページのみ実行(カテゴリーページなどでは実行しない) |
in_the_loop() |
WordPressのメインループ内のみ実行する |
is_main_query() |
メインクエリのみ実行(サイドバーなどでの誤作動を防ぐ) |
$content .= $footer_text |
元のコンテンツに定型文を追記して返す |
WordPressフックの基本:アクションとフィルター
WordPressのプラグイン開発の核心はフック(Hooks)の仕組みです。
- アクション(Action):特定のタイミングで処理を「実行」する
→add_action( 'フック名', 'コールバック関数' ); - フィルター(Filter):データを受け取り、加工して「返す」
→add_filter( 'フック名', 'コールバック関数' );
よく使うフックの例:
wp_enqueue_scripts(アクション):フロント側でCSS/JSを読み込むadmin_menu(アクション):管理画面にメニューを追加するinit(アクション):WordPressの初期化時に実行するthe_content(フィルター):投稿コンテンツを加工するthe_title(フィルター):投稿タイトルを加工する
7. プラグインを有効化する
コードが書けたら、WordPressの管理画面からプラグインを有効化しましょう。
有効化の手順
- WordPressの管理画面にログインする
- 左メニューの 「プラグイン」→「インストール済みプラグイン」 を開く
- 作成したプラグイン(例:My Footer Text)を一覧から見つける
- 「有効化」 をクリックする
- 投稿ページを開いて、末尾に定型文が表示されれば成功!
💡 ポイント:プラグインが一覧に表示されない場合は、PHPファイルのヘッダーコメントに Plugin Name: が正しく記述されているか確認してください。
8. よくあるエラーと対処法
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| プラグインが一覧に表示されない | ヘッダーコメントの書き方が間違っている | Plugin Name: の記述を確認する |
| 有効化したら画面が真っ白になる | PHPの文法エラー(シンタックスエラー) | wp-config.phpでWP_DEBUGをtrueにしてエラーを確認 |
| 関数が重複しているというエラー | 他のプラグインやテーマと関数名が衝突している | 関数名にプレフィックスをつける(例:myfp_) |
| 処理が意図した場所で実行されない | フック名またはタイミングが間違っている | WordPress公式リファレンスでフックを確認する |
| CSSやJSが読み込まれない | ファイルパスやURLが間違っている | plugin_dir_url()を使ってURLを取得する |
デバッグを有効にする方法
開発中は wp-config.php に以下を追記してエラーを表示させましょう。
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // エラーをログファイルに出力
define( 'WP_DEBUG_DISPLAY', true ); // エラーを画面に表示
⚠️ 本番環境では必ず false に戻してください。
9. 次のステップ
基本が理解できたら、次のトピックに挑戦してみましょう。
スキルアップのロードマップ
- 管理画面にオプションページを追加する
→add_menu_page()や Settings API を使って設定画面を作る - ショートコードを作成する
→add_shortcode()で投稿内に使えるカスタム機能を作る - カスタム投稿タイプを追加する
→register_post_type()で独自のコンテンツタイプを作る - データベースを操作する
→$wpdbグローバル変数を使ってデータを保存・取得する - REST APIを使う
→register_rest_route()でカスタムエンドポイントを作る - WordPress.orgにプラグインを公開する
→ GPLライセンスで公開し、世界中のユーザーに使ってもらう
参考リソース
- WordPress Plugin Handbook(公式):https://developer.wordpress.org/plugins/
- WordPress コードリファレンス(関数・フック検索):https://developer.wordpress.org/reference/
- WordPress フックリファレンス:https://developer.wordpress.org/reference/hooks/
まとめ
今回の記事で学んだことを整理しましょう。
- ✅ プラグインは最小1つのPHPファイルで作れる
- ✅ ファイル先頭のヘッダーコメントが必須(
Plugin Nameは特に重要) - ✅ セキュリティのため
ABSPATHチェックを必ず入れる - ✅ アクションとフィルターのフックがプラグイン開発の核心
- ✅ 関数名にはユニークなプレフィックスをつけて衝突を防ぐ
- ✅ 開発中は
WP_DEBUGを有効にしてデバッグしやすくする
最初は難しく感じるかもしれませんが、ひな形を使いながら小さな機能から作り始めることが上達の近道です。ぜひ今日から自分だけのオリジナルプラグイン作りに挑戦してみてください!



コメント