WordPressのプラグインは、WordPressの基本機能を拡張・カスタマイズするためのモジュール型のプログラムです。その仕組みと構成について以下に解説します。
プラグインの仕組み
- フック機構(Hooks)
- WordPressのプラグインは、主に「アクションフック」と「フィルターフック」を通じて、WordPress本体の動作に割り込んで機能を追加します。
- アクションフック: 特定のタイミングでコードを実行します(例: 記事が保存された後など)。
- フィルターフック: データを変更する際に利用します(例: 投稿タイトルをカスタマイズ)。
- WordPressのプラグインは、主に「アクションフック」と「フィルターフック」を通じて、WordPress本体の動作に割り込んで機能を追加します。
- PHPでの実装
- プラグインはPHPで記述され、WordPressのAPIを利用して作成されます。
- 独立性
- 各プラグインは独立しており、他のプラグインやテーマの影響を受けない設計を基本とします。ただし、互換性問題が起こる場合もあります。
- プラグインディレクトリ
- プラグインはWordPressの
/wp-content/plugins/
フォルダーに配置されます。
- プラグインはWordPressの
プラグインの構成
1. 必須ファイル
メインプラグインファイル
プラグインのエントリーポイントで、通常はプラグイン名と同じ名前の.php
ファイル。ファイルの冒頭に以下のコメントブロックを記述し、WordPressにプラグインを認識させます。
ヘッダーコメントを含む有効な PHP ファイルの例)
/*
* Plugin Name: My Basics Plugin
* Plugin URI: https://example.com/plugins/the-basics/
* Description: Handle the basics with this plugin.
* Version: 1.10.3
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: John Smith
* Author URI: https://author.example.com/
* License: GPL v2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Update URI: https://example.com/my-plugin/
* Text Domain: my-basics-plugin
* Domain Path: /languages
* Requires Plugins: my-plugin, yet-another-plugin
*/
ファイルレベルの PHPDoc DocBlock と WordPress プラグインのファイル ヘッダーを許可する別の例)
/**
* Plugin Name
*
* @package PluginPackage
* @author Your Name
* @copyright 2019 Your Name or Company Name
* @license GPL-2.0-or-later
*
* @wordpress-plugin
* Plugin Name: Plugin Name
* Plugin URI: https://example.com/plugin-name
* Description: Description of the plugin.
* Version: 1.0.0
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: Your Name
* Author URI: https://example.com
* Text Domain: plugin-slug
* License: GPL v2 or later
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
* Update URI: https://example.com/my-plugin/
* Requires Plugins: my-plugin, yet-another-plugin
*/
この部分をWordPressは読み取り、プラグイン管理画面に表示します。
2. オプションファイル
- 追加のPHPファイル: 機能が複雑になる場合に、コードをモジュール化して管理。
- CSS/JSファイル: 管理画面やフロントエンドでスタイルやスクリプトを適用。
- テンプレートファイル: 特定のページや表示用のテンプレート。
3. ディレクトリ構成の例
以下はプラグインのディレクトリ構成の例です。
例1)WordPress Plugin Handbook:ベストプラクティスの紹介例
https://developer.wordpress.org/plugins/plugin-basics/best-practices/
/plugin-name
plugin-name.php
uninstall.php
/languages
/includes
/admin
/js
/css
/images
/public
/js
/css
/images
例2)その他のサンプル
plugin-name/
│
├── plugin-name.php # メインファイル
├── readme.txt # プラグイン説明ファイル(WordPress公式リポジトリ用)
├── uninstall.php # プラグインのアンインストール処理
├── assets/ # 静的リソース(公開用画像やアイコン)
│ ├── icon.png
│ ├── banner.jpg
├── includes/ # PHPロジックや補助関数
│ ├── core-functions.php # 核心となる関数群
│ ├── admin-settings.php # 管理画面関連
│ ├── hooks.php # アクションやフィルターの設定
├── templates/ # テンプレートファイル
│ ├── template-example.php
├── public/ # フロントエンド用のリソース
│ ├── css/
│ │ ├── style.css # フロントエンド用のスタイルシート
│ ├── js/
│ ├── script.js # フロントエンド用のJavaScript
├── admin/ # 管理画面用のリソース
│ ├── css/
│ │ ├── admin-style.css # 管理画面用スタイル
│ ├── js/
│ ├── admin-script.js # 管理画面用スクリプト
├── languages/ # 翻訳ファイル
│ ├── plugin-name-en_US.mo
│ ├── plugin-name-en_US.po
開発の流れ
- プラグインディレクトリの作成
/wp-content/plugins/
に新しいフォルダを作成します。- フォルダ名はプラグイン名に基づく簡潔なものにします。
- メインファイルの作成
- 必須のコメントブロックを記述し、プラグインを有効化できるようにします。
- フックを利用
- WordPressのフックを使用して、必要な機能を追加します。
- スタイルやスクリプトの追加
wp_enqueue_script()
やwp_enqueue_style()
を使って、CSSやJavaScriptを適切に読み込む。
- テスト
- ローカル環境で動作テストを行い、エラーや警告がないことを確認します。
参考公式ドキュメント
- WordPress Plugin Handbook
- Plugin Headers
https://developer.wordpress.org/plugins/plugin-basics/header-requirements/
このページでは、プラグインファイルのヘッダー部分に含めるべき情報の詳細が記載されています。 - WordPress.org プラグインディレクトリ
https://developer.wordpress.org/plugins/wordpress-org/
このページでは、プラグインのファイル構成や配置に関するベストプラクティスが詳しく説明されています。 - Best Practices
https://developer.wordpress.org/plugins/plugin-basics/best-practices/
プラグイン開発におけるベストプラクティスが記載されており、コードの組織化やディレクトリ構成に関する推奨事項が含まれています。
- Plugin Headers
- WordPress Codex
- Writing a Plugin
https://codex.wordpress.org/Writing_a_Plugin#File_Header
プラグインファイルのヘッダーの基本情報を説明したWordPress公式リソース
- Writing a Plugin
コメント