準備作業と環境設定
コードの作成に取りかかる前に、安定して効率的な開発環境を整えることが非常に重要です。これにより、プラグインの構造が今後の開発においても明確に保たれるだけでなく、現代のツールを活用して作業効率を向上させることもできます。
ローカル開発環境の設定
私たちは、Local by Flywheel、XAMPP、MAMPなどのローカルサーバー環境の使用をお勧めします。これらのツールを使えば、コンピューター上にApache/Nginx、MySQL、PHPを備えたWordPressの運用環境を迅速に構築できます。PHPのバージョンが対象とするサーバーのバージョンと互換性があることを確認し、エラーレポート機能を有効にしておくと、開発初期に問題を素早く特定するのに役立ちます。
コードエディターとツールの選択
まず最初のステップとして、Visual Studio Code、PhpStorm、Sublime Textなどの機能豊富なコードエディタを選択することです。これらのエディタには、通常、構文のハイライト表示、コードの補完機能、バージョン管理の統合などが備わっています。さらに、PHP_CodeSnifferのようなコードの整形ツールやXdebugのようなデバッグツールをインストールすることで、開発作業の効率とコードの品質が大幅に向上します。
推薦図書 WordPressテーマ開発の完全ガイド:ゼロからプロフェッショナルなウェブサイトを構築する。
あなたの最初のプラグインを作成する。
では、最もシンプルなプラグインの作成から始めましょう。これにより、WordPressのプラグインの基本構造と有効化(アクティベーション)の仕組みを理解することができます。
プラグインのメインファイルと基本ヘッダー情報
すべてのWordPressプラグインには、メインのPHPファイルが必要であり、そのファイルには標準的なプラグインヘッダ情報が含まれていなければなりません。これにより、WordPressがそのプラグインを認識できるようになります。ここでは、「example-plugin.php」という名前のファイルを作成します。 my-first-plugin.php のファイルです。
このコードをそのファイルに保存し、WordPressのインストールディレクトリにアップロードしてください。 /wp-content/plugins/my-first-plugin/ フォルダ内にあります。
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习的简单 WordPress 插件。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ 保存した後、WordPressの管理画面にある「プラグイン」ページでこのプラグインを確認できます。そこで「有効にする」をクリックするとプラグインがアクティブになります。現時点ではまだ何の機能もありませんが、WordPressが認めたプラグインを無事に作成することができました。
プラグインに設定ページを追加する
よくある要求の一つに、プラグインにバックエンド管理ページを追加することがあります。これはWordPressが提供する機能を利用して実現できます。 add_menu_page() または add_options_page() 関数を使って実現します。
推薦図書 WordPressプラグイン開発の究極ガイド:ゼロからプロフェッショナルな拡張機能の構築まで。
メインファイルにコードを追加し続けて、シンプルな設定ページを作成します。
// 钩子:在管理员菜单中添加一个新的页面
add_action('admin_menu', 'mfp_add_admin_menu');
function mfp_add_admin_menu() {
add_options_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-first-plugin', // 菜单slug
'mfp_settings_page_html' // 用于显示页面内容的回调函数
);
}
// 设置页面的HTML内容
function mfp_settings_page_html() {
// 检查用户权限
if (!current_user_can('manage_options')) {
return;
}
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ?></h1>
<p>私の最初のプラグインの設定ページにようこそ!</p>
<form action="/ja/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段(后续可在此添加)
settings_fields('mfp_options_group');
do_settings_sections('my-first-plugin');
submit_button('保存设置');
?>
<input type="hidden" name="trp-form-language" value="ja"/></form>
</div>
あなたのアカウントは有効です。あなたはログインしています。 このコードは以下のように使用されます: add_action() フックは関数を呼び出します。 mfp_add_admin_menu WordPressにマウントする admin_menu アクションとしては、管理者メニューが作成される際に私たちの関数が呼び出され、それによって「設定」メインメニューに新しいサブメニュー項目が追加されます。そのサブメニュー項目をクリックすると、関連する処理が実行されます。 mfp_settings_page_html 関数を使ってページの内容をレンダリングします。
WordPressのフック(Hook)とフィルター(Filter)について理解する
WordPressの核心的な哲学は「フック(Hooks)」です。これにより、特定のタイミングや場所でカスタムコードを挿入することができ、WordPressのコア機能を直接変更したり拡張したりすることができます。フックには主に2種類あります:アクション(Actions)とフィルター(Filters)です。
アクションフックの使用方法
アクションフックは、特定のイベントが発生したときにコードを実行します。例えば、記事を公開したり、管理バックエンドを読み込んだり、ページフッターを出力したりするときです。アクションフックは返り値を期待しませんので、主に何らかのタスクを実行するために使用されます。 add_action() この関数は、指定されたアクションフックにコールバック関数をマウントするためのものです。
例えば、すべての記事の末尾に自動的に著作権表示を追加したいと思います。そのためには以下の方法を利用できます: the_content このフィルター(同時にアクションポイントでもあります)を使って実現します。しかし、アクションをより純粋に示すために、私たちは… wp_footer フックは、ウェブサイトのフロントページのフッター部分に情報を出力します。
add_action('wp_footer', 'mfp_add_footer_note');
function mfp_add_footer_note() {
if (is_single()) { // 仅在文章页面显示
echo '<p style="text-align:center; color:#666;">この記事は、私のプラグインによってお客様のために表示されています。</p>';
}
} フィルターフックの使用方法
フィルターフックは、データが使用される前やデータベースに保存される前にそれを変更するために使用されます。このフックでは、値を受け取り、変更した後にその値を返すことが求められます。私たちはこれを利用しています。 add_filter() 関数を使用してコールバック関数をマウントする。
推薦図書 WordPressプラグイン開発入門ガイド:ゼロからカスタマイズされた機能モジュールを作成する方法。
典型的例えとして、記事の要約の長さを変更することが挙げられます。WordPressのデフォルトでは、要約の長さは55語に設定されていますが、これを変更することができます。 excerpt_length フィルターを使ってそれを変更します。
add_filter('excerpt_length', 'mfp_custom_excerpt_length');
function mfp_custom_excerpt_length($length) {
// 将摘要长度修改为 20 个单词
return 20;
} この例では、関数 mfp_custom_excerpt_length デフォルトの長さ値を受け取りました。 $lengthその後、私たちが定義した新しい長さ値である「20」を返します。WordPressはこの返された値を使用して要約を生成します。
プラグインのセキュリティとベストプラクティス
人気のあるプラグインを開発するには、セキュリティ、メンテナビリティ、パフォーマンスといった要素を考慮することが不可欠です。ベストプラクティスに従うことで、多くの一般的な問題を回避することができます。
データ検証、エスケープ処理、およびクリーニング
ユーザーが入力したデータやデータベースから取得したデータを絶対に信用してはいけません。どんなデータを処理する前にも、必ず検証、クリーニング、エスケープ処理を行う必要があります。
* 验证(Validation):检查数据是否符合预期的格式或类型(如是否是邮箱、数字等)。可以使用 filter_var() 関数、またはWordPressの sanitize_*() シリーズ関数。
* 清理(Sanitization):清除数据中的非法或危险字符,使其变得安全。对于表单输入,常用 sanitize_text_field()。
* 转义(Escaping):在将数据输出到 HTML、JavaScript 或 URL 时,根据上下文进行转义,以防止跨站脚本(XSS)攻击。WordPress 提供了丰富的转义函数,如 esc_html()、esc_attr()、esc_url() と wp_kses_post()。
例えば、データベースから取得した変数を安全に出力する方法は以下の通りです:
// 假设 $user_input 是从数据库或表单获取的数据
echo '<div class="info">'`. esc_html($user_input)`.'</div>';
// 或者,如果允许一些安全的HTML标签
echo '<div class="info">'`. wp_kses_post($user_input)`.'</div>'; プラグインの国際化とローカライゼーション
あなたのプラグインを世界中のユーザーが利用できるようにするためには、翻訳機能を追加する必要があります。このプロセスを「国際化(i18n)」と呼びます。WordPressではGNU gettextフレームワークを使用して国際化を実現しています。
まず、翻訳が必要なすべての文字列に対して、特定の関数を使用して処理を行います。最も一般的に使用される方法は… __()(返り値用)および _e()(直接出力用)
以前に作成した管理ページのタイトルを変更します:
function mfp_settings_page_html() {
if (!current_user_can('manage_options')) {
return;
}
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ?></h1>
<p><?php _e('欢迎来到我的第一个插件的设置页面!', 'my-first-plugin'); ?></p>
...
</div>
あなたのアカウントは有効です。あなたはログインしています。 注意:各翻譯函数都包含一个文本域参数(`‘my-first-plugin’`),该参数必须与插件头部信息中定义的参数一致。 Text Domain 完全に一致しています。その後、Poeditのようなツールを使用して、プラグインのコード内にある翻訳可能な文字列をスキャンし、翻訳データを生成することができます。 .pot テンプレートファイルを作成し、さまざまな言語用に対応させます。 .po と .mo 翻訳したファイルをプラグインディレクトリに置いてください。 /languages/ フォルダの中にあります。
概要
このガイドを通じて、私たちはWordPressプラグイン開発の核心的なプロセスを体系的に学びました。ローカル環境の構築、標準的なヘッダ情報を含むメインファイルの作成、アクションやフィルターハックを利用してWordPressのコアと深く連携する方法、そして非常に重要なセキュリティ対策や国際化の準備に至るまで、機能が充実し、安全で信頼性の高いプラグインを構築するために必要な基礎知識を身につけました。優れたプラグインは、明確なコード構造、厳格なセキュリティ対策、そして丁寧に考えられたユーザーインターフェースによって生まれるのです。次に最適な学習方法は、実際の小さな問題を解決するプラグインから始めて、徐々により複雑なAPIや機能を探求していくことです。
FAQ よくある質問
WordPressプラグインを開発するには、どのような基礎知識が必要ですか?
PHPプログラミング言語を習得する必要があります。これはWordPressの核心的な開発言語です。また、HTML、CSS、JavaScriptについても基本的な知識があるとよいでしょう。これらはフロントエンドの表示やインタラクションを処理するために使用されます。MySQLデータベースの基本概念(CRUD操作など)にも精通していると役立ちます。なぜなら、WordPressはデータを保存するためにMySQLを使用しているからです。最後に、WordPressの基本構造とワークフローを理解することが重要です。
WordPressのプラグインをどのようにデバッグするか?
まず、`wp-config.php`ファイル内でWordPressのデバッグモードを有効にしてください。 define('WP_DEBUG', true); と define('WP_DEBUG_LOG', true); `true` に設定してください。そうすると、エラーメッセージが `/wp-content/debug.log` ファイルに記録され、訪問者に直接表示されるのを防ぐことができます。次に、Xdebug のような専門的なデバッグツールをコードエディタ(例:VS Code)と統合することで、ブレークポイントの設定やステップバイステップデバッグなどの高度な機能を利用できます。さらに、ブラウザの開発者ツールのネットワークタブやコンソールタブを使えば、AJAXリクエストやフロントエンドのJavaScriptエラーを確認することができます。
私が開発したプラグインをWordPressの公式プラグインディレクトリにどのように提出するか教えてください。
提出プラグインの申請に先立ち、ご自身のプラグインがWordPress公式のコーディングスタンダードおよびベストプラクティスを完全に遵守していることを確認してください。また、コードのレビューとセキュリティチェックも徹底的に行ってください。WordPress.orgのアカウントを登録した後、プラグインの圧縮ファイルをプラグイン提出ページからアップロードしてください。審査チームがコードをチェックし、その安全性や合法性、関連ガイドラインの遵守状況を確認します。審査に合格すれば、ご自身のプラグインは公式のディレクトリに掲載され、世界中のユーザーがダウンロードしてインストールできるようになります。
如何为我的插件添加一个设置选项到 WordPress 自定义器中?
WordPressのカスタマイザー(Customizer)は、リアルタイムで設定内容をプレビューできる機能を提供しています。これを利用することで、変更内容を確認しながら設定を行うことができます。 add_action('customize_register', 'your_function'); フック。コールバック関数内で使用されます。 your_function はい、通過しました。 $wp_customize オブジェクトには「セクション(Section)」1つ、「設定項目(Setting)」1つ、および「コントローラー(Control)」1つが追加されます。これにより、ユーザーはカスタマイザーインターフェース内でオプションを調整し、リアルタイムでフロントエンドの効果を確認することができます。テーマやプラグインの外観設定の管理に非常に適しています。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。