準備作業と環境設定
コードの執筆を始める前に、安定して効率的な作業環境を構築することが成功への第一歩です。WordPressを実行できるローカル環境またはリモート環境が必要です。特に、Local by Flywheel、XAMPP、MAMPのようなローカル開発環境の使用を強くお勧めします。これらを使用すると、オンラインサーバーに頻繁にデプロイすることなく、迅速にイテレーションやテストを行うことができます。
準備が必要なソフトウェアには、コードエディタ(VS CodeやPhpStormなど)とバージョン管理システムとしてのGitが含まれます。次に、プラグインのメインファイルの作成を開始します。すべてのWordPressプラグインにはメインファイルが必要であり、このファイルは通常プラグインの名前で命名され、拡張子`.php`を持ちます。 .php 例えば、終わりの部分についてです… my-first-plugin.phpこのファイルのヘッダー部分には、WordPressの標準に準拠したプラグイン情報のコメントを含める必要があります。これにより、WordPressシステムにプラグインの内容を説明することができます。
<?php
/**
* Plugin Name: My First Plugin
* Plugin URI: https://example.com/my-first-plugin
* Description: 一个简单的自定义插件,用于学习 WordPress 插件开发。
* Version: 1.0.0
* Author: Your Name
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ 作成したプラグインフォルダー(例えば…) my-first-pluginWordPressのインストールディレクトリに置いてください。 wp-content/plugins/ 以下の手順に従ってください。WordPressの管理画面にログインした後、「プラグイン」メニューでそのプラグインを見つけ、すぐに有効にすることができます。これで、プラグイン開発の「Hello World」のステップを完了しました。
推薦図書 入門から上級者まで:WordPressプラグイン開発の完全ガイドと実践トレーニング。
プラグインのコア構造フレームワーク
構造がしっかりしているプラグインは、自分でのメンテナンスが容易であるだけでなく、他の開発者との協力にも便利です。プロジェクトの初期段階から、合理的なディレクトリ構造を守ることをお勧めします。典型的なプラグインには、以下のようなディレクトリやファイルが含まれることがあります:メインのプラグインファイル(ルートディレクトリにあります)…includes/ フォルダ(コア機能や関数を格納するためのもの)admin/ フォルダ(バックエンド関連のコードを保存するためのもの)public/ フォルダ(フロントエンド関連のコードを保存するためのもの)assets/ JavaScript、CSS、画像ファイルを格納するフォルダー、および言語パックファイルです。
プラグインのロジックの入口は通常、メインファイル内にあります。ここで、プロセス指向のプログラミングパラダイムを採用するか、オブジェクト指向のプログラミングパラダイムを採用するかを決定する必要があります。複雑なプラグインの場合、オブジェクト指向(OOP)の方がカプセル化やモジュール化の利点をより発揮できます。例えば、メインクラスを定義することができます。 My_First_Pluginそして、その中でフック(Hooks)を利用してプラグインの機能をWordPressのライフサイクルに統合します。
WordPressの機能はフック(Hook)メカニズムによって拡張されており、主に「アクション(Action)」と「フィルター(Filter)」に分けられます。アクションフックを使用すると、特定のタイミングでカスタムコードを実行することができ、フィルターフックを使用するとデータを変更することができます。 add_action() と add_filter() この関数を使用して、コールバック関数をマウント(つまり、プラグインの処理フローに組み込む)することができます。例えば、プラグインの初期化クラス内でこのメソッドを使用するといった具合です:
class My_First_Plugin {
public function __construct() {
// 在管理员菜单初始化时,执行 `create_admin_menu` 方法
add_action( 'admin_menu', array( $this, 'create_admin_menu' ) );
// 在文章内容显示前,通过过滤器修改内容
add_filter( 'the_content', array( $this, 'modify_post_content' ) );
}
public function create_admin_menu() {
// 创建菜单的代码
}
public function modify_post_content( $content ) {
// 修改内容的代码
return $content;
}
}
new My_First_Plugin(); プラグインのバックエンド管理インターフェースを作成する
ほとんどのプラグインには、ユーザーとインタラクションを行うためのバックエンド管理ページが必要です。WordPress では、メニューページ、サブメニューページ、設定ページ、オプション管理を作成するための豊富な API が提供されています。
まず、あなたは以下の手順を使用する必要があります: add_menu_page() または add_submenu_page() これらの関数を使用すると、ページをWordPressに登録することができます。これらの関数は、WordPressに管理者用サイドバー内のどの位置に新しいメニューアイテムを追加するかを指示します。ページの内容はコールバック関数によって生成され、この関数内でHTMLフォームやその他のコンテンツを出力することができます。
推薦図書 WordPressプラグイン開発入門ガイド:ゼロから最初のカスタムプラグインを作成する方法。
設定を保存する必要があるプラグインについては、WordPressの設定APIが標準的で安全な選択肢です。このAPIは権限認証、CE(Content Encryption)ではないフィールドの処理、およびセキュリティトークンの管理を自動的に行うため、作業を大幅に簡素化します。使用する際には必ず順番に操作を行う必要があります。 register_setting()、add_settings_section() と add_settings_field() ご自身の設定を定義してください。以下は、テキストボックスが1つある設定ページを作成するための簡単な例です:
public function create_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'my-plugin-settings', // 菜单 Slug
array( $this, 'settings_page_html' ), // 回调函数
'dashicons-admin-generic', // 图标
6
);
// 注册设置
register_setting( 'my_plugin_settings_group', 'my_plugin_option_name' );
}
public function settings_page_html() {
// 检查用户权限
if ( !current_user_can( 'manage_options' ) ) {
return;
}
?>
<div class="wrap">
<h1></h1>
<form action="/ja/options.php/" method="post" data-trp-original-action="options.php">
<?php
settings_fields( 'my_plugin_settings_group' );
do_settings_sections( 'my-plugin-settings' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="ja"/></form>
</div>
あなたのアカウントは有効です。あなたはログインしています。 ユーザー体験を向上させるためには、管理インターフェースにJavaScriptやCSSを導入する必要があるかもしれません。WordPressではそれらが提供されています。 wp_enqueue_script() と wp_enqueue_style() 関数について説明し、その使用方法を提案します。 admin_enqueue_scripts フックを使用して、これらのリソースを安全に読み込みます。
プラグインのセキュリティとベストプラクティス
セキュリティはプラグイン開発において妥協してはならない重要な要素です。セキュリティ上の脆弱性を持つプラグインは、ウェブサイト全体を危険にさらす可能性があります。最も重要な原則は、「ユーザーの入力を絶対に信じてはならない」ということです。外部から取得されるすべてのデータについても同様です。 $_GET、$_POSTデータベースであれ、他のAPIであれ、すべてに対して検証、クリーニング、エスケープ処理を行う必要があります。
データベースに保存するためのデータについては、以下のように処理します: sanitize_text_field()、wp_kses() などの関数を使用してデータをクリーンアップします。HTMLページに表示するためのデータについては、 esc_html()、esc_attr() または wp_kses_post() エスケープ処理を行ってください。データベースクエリを実行する際には、必ずWordPressが提供する機能を使用してください。 $wpdb クラスとそのメソッド、例えば… prepare()SQLインジェクション攻撃を防ぐためです。
非CE(Cross-Site Validation)認証は、フォームをクロスサイトリクエストフォージング(CSRF)攻撃から守るための鍵となる手段です。 wp_nonce_field() フォーム内にフィールドを生成し、送信処理時にそれらを使用します。 wp_verify_nonce() 検証を行ってください。
パフォーマンスの最適化も同様に重要です。プラグインは必要に応じてリソースをロードし、必要な時だけフックを実行するようにすべきです。例えば、バックグラウンドで動作するスクリプトやスタイルは、プラグイン専用の管理ページでのみロードされるべきです。条件判断を使用することもできます。例えば、特定の条件が満たされた場合にのみ処理を実行するようにするなどです。 $_GET['page'] パラメータについてですが、大量のデータベースクエリや複雑な計算を引き起こす可能性のある機能については、キャッシュメカニズムの導入を検討してください。例えば、WordPressのTransients APIを使用して一時データを保存する方法があります。
推薦図書 WordPressプラグイン開発の完全ガイド:ゼロから実際に公開するまでの実践トレーニング。
最後に、良質なコードには十分なコメントが含まれているべきであり、WordPressのコーディングスタンダード(WordPress Coding Standards)に準拠した形式で書かれている必要があります。また、国際化(Internationalization)とローカライゼーション(Localization)の観点も考慮に入れるべきです。 __() と _e() これらの関数は、ユーザーが見ることができるすべての文字列を処理(ラップ)します。 load_plugin_textdomain() この関数を用意しておくことで、将来的にあなたのプラグインを簡単に翻訳できるようになります。
テストを行い、その後公式リポジトリにリリースします。
プラグインを世界中の人々と共有する前に、徹底的なテストを行うことは不可欠です。テストはさまざまな環境(異なるPHPバージョン、異なるWordPressバージョン)で実施し、プラグインの各機能(アクティブ化、非アクティブ化、アンインストール、データのクリアなど)をすべてカバーする必要があります。
WordPressでは標準的なアンインストール手順が用意されています。メインのプラグインファイル内にアンインストール用のフックを登録することができます。管理者が管理画面からプラグインを削除すると、WordPressは「 uninstall_hook.php 」という名前のファイルが存在するかどうかをチェックします。 uninstall.php そのファイルが存在する場合、それが読み込まれて実行されます。これは、プラグインによって作成されたカスタムデータベーステーブルや設定オプションを削除するためのチャンスです。
// 在主插件文件中注册卸载钩子
register_uninstall_hook( __FILE__, 'my_plugin_uninstall' );
function my_plugin_uninstall() {
// 删除插件创建的选项
delete_option( 'my_plugin_option_name' );
// 如果创建了自定义数据库表,也可以在这里删除
// global $wpdb;
// $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}my_custom_table" );
} プラグインの開発、テスト、ドキュメント作成がすべて完了したら、WordPressの公式プラグインディレクトリに提出することを検討できます。そのためには、SVNリポジトリを作成し、指定された構造に従ってコードを提出する必要があります(コードの内容も含めて)。 readme.txt (ファイル)は人工による審査を経ています。成功裏にアップロードされた後、安定したサービスをご利用いただけるようになります。 https://wordpress.org/plugins/your-plugin-name/ ユーザーは自分のWordPress管理画面から直接あなたのプラグインをインストールすることができます。これにより、プラグインの信頼性と配布範囲が大幅に向上します。
概要
WordPressプラグインの開発とは、アイデアを実際の機能に変え、世界最大のコンテンツ管理システム(CMS)エコシステムに統合するプロセスです。環境の構築、コードの構造化、管理インターフェースの作成、そしてセキュリティ基準の厳守に至るまで、すべてのステップが非常に重要です。フック(hook)メカニズムを習得することは、WordPressの無限の可能性を引き出すための鍵となります。最終的に、厳格なテストと標準的なリリースプロセスを経て、あなたの成果は何百万ものウェブサイトで安全かつ効率的に活用されることになります。公式ドキュメントやコミュニティのベストプラクティスを継続的に学ぶことが、開発スキルを向上させるための鍵です。
FAQ よくある質問
###: WordPressプラグインを開発するには、どのような前提知識が必要ですか?
PHPについては確かな理解が必要です。なぜなら、WordPressのコア部分やプラグインは主にPHPで書かれているからです。また、ユーザーインターフェースを作成するためにはHTML、CSS、JavaScriptにも精通していることが求められます。基本的なMySQLデータベースの概念や、WordPress特有の関数、フック(hook)の仕組みを理解することは、成功した開発のための基石となります。
WordPressプラグイン内の問題をデバッグする方法
まず、確認してください。 wp-config.php ファイル内で有効になっています。 WP_DEBUG このモードでは、PHPのエラーや警告が画面上に表示されます。また、それを利用することもできます。 error_log() この関数は、デバッグ情報をサーバーのエラーログに書き込みます。複雑なロジックのトレースには、Query MonitorやDebug BarなどのWordPress専用のデバッグプラグインを使用する方がより効率的です。
私のプラグインは、どのようにして異なるWordPressバージョンと互換性を持たせることができるのでしょうか?
開発時には、廃止された関数の使用を避けるべきです。関数に新しい機能を追加する前に、まずその関数が現在も使用されているかどうかを確認してください。 function_exists() または version_compare() その利用可能性を確認してください。プラグインに関しては… readme.txt ファイルの中で、テストに合格したWordPressのバージョン範囲が明確に記載されています。WordPressのメジャーリリースに合わせて、プラグインを定期的に更新してください。
プラグインの更新やユーザーのアップグレードをどのように処理するか?
プラグインをWordPress.orgに公開する場合、アップデートの管理は公式のシステムによって自動的に行われます。プライベートなプラグインの場合は、カスタムのアップデートチェッカーを作成することができます。どちらの場合も、新しいバージョンを公開する前には、必ず独立したテスト環境でアップグレードのテストを行い、データベースの構造変更や設定の変更が既存のウェブサイトの機能を破壊しないことを確認してください。
WordPress公式ディレクトリにプラグインをアップロードするための主な要件は何ですか?
お客様のプラグインコードはGPL互換のライセンスに従う必要があります。また、プラグインには標準に準拠した構造が必要です。 readme.txt ファイルです。コードは基本的に安全であり、悪意のある行為を行わず、記述されている機能を正しく実行する必要があります。レビュープロセスではこれらの点を確認しますが、コードの品質について詳細な技術的な検証は行いません。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。