核心概念与准备工作
WordPressプラグイン開発とは、WordPressのコア機能に加えて、独立したPHPコードモジュールを作成し、ウェブサイトの機能を拡張・強化することを指します。その仕組みを理解することが、成功の第一歩です。WordPressはイベント駆動型(フックとフィルター)およびオブジェクト指向のプログラミングパラダイムを採用しています。プラグインとは、基本的に1つまたは複数のPHPファイルで構成され、WordPressが事前に定義したインターフェースを通じてコアと通信し、安全に機能を追加するものです。
開発を始める前に、安定したローカル環境またはテスト環境が必要です。XAMPP、Local by Flywheel、DevKinstaなどのローカルサーバーソフトウェアのインストールを強くお勧めします。また、VS CodeやPhpStormなどのコードエディタを用意し、WordPressのデバッグモードを有効にしておくことが重要です。これらの設定は開発作業に不可欠です。wp-config.phpファイル内にいくつかの定数を設定します:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false ); 有効にするWP_DEBUG_LOGその後、エラーメッセージが記録されます。/wp-content/debug.logこの情報はファイル内に含まれており、問題の調査に非常に重要です。
推薦図書 WordPressテーマ開発の上級ガイド:入門から習得までの実践的なチュートリアル。
あなたの最初のプラグインを作成する。
プラグインを作成するには、まず以下のステップから始めましょう:/wp-content/plugins/ディレクトリ内に専用のフォルダを作成します。例えば:my-first-pluginこのフォルダ内には、メインのPHPファイルを作成する必要があります。ファイル名は通常、フォルダ名と同じになります。例えば:my-first-plugin.php。
プラグインのヘッダー情報を作成する
すべてのWordPressプラグインには、標準的なプラグインヘッダーのコメントが必要です。これはWordPressがプラグインを識別するための「身分証明書」のようなものです。このコメントはメインファイルの冒頭に位置し、特定の形式で記述されなければなりません。Plugin Nameその他の情報、例えば説明文、バージョン、作者なども非常に重要です。
<?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の管理画面(バックエンド)の「プラグイン」リストに表示され、上記の情報が表示されるようになります。Text DomainとDomain Pathこれはプラグインの国際化(翻訳)のために用意されたものです。
基本的な機能を実装する
では、プラグインに簡単な機能を追加しましょう。記事の内容の下部に自動的にカスタムテキストを追加する機能です。これにはWordPressの「フィルター(Filter)」を使用します。フィルターを使うと、データがデータベースに保存されたりブラウザに出力されたりする前に、そのデータを変更することができます。
私たちは使用する予定です。the_contentこのフィルターについてです。メインのプラグインファイル内で、ヘッダーのコメントの後に以下のコードを追加してください:
推薦図書 WordPressプラグイン開発の究極ガイド:ゼロから始めて、あなたの最初のプラグインを作成する。
// 在文章内容末尾添加自定义文本
function myfp_add_text_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = ‘<p><em>この記事をお読みいただき、ありがとうございます!「私の最初のプラグイン」がサポートを提供しています。</em></p>’;
$content .= $custom_text;
}
return $content;
}
add_filter( ‘the_content’, ‘myfp_add_text_to_content’ ); ファイルを保存した後、WordPressの管理画面にログインしてこのプラグインを有効にしてください。個々の記事を閲覧すると、記事の内容の最後に追加されたテキストが表示されます。myfp_add_text_to_contentこれは私たちが定義した関数で、記事の内容を受け取ります。$content条件を満たす場合(つまり、単一の記事であり、メインループ内にある場合)には、テキストを追加した後、修正された内容を返します。add_filter()この関数は、このカスタム関数をメインのシステムに「マウント」します。the_contentフィルターの上にあります。
フックとフィルターを使用してインタラクションを構築する
WordPressプラグインの強力な点は、その豊富なフックシステムにあります。フックシステムには「アクションフック(Action Hooks)」と「フィルターフック(Filter Hooks)」の2種類があります。アクションフックを使用すると、特定のタイミングでコードを実行することができ、フィルターフックを使用するとデータを変更することができます。
アクションフックを利用して管理メニューを追加する
仮にプラグインに設定ページを追加したいと思った場合、アクションフックを使用する必要があります。admin_menuそれはWordPressのバックエンド管理メニューの構築時にトリガーされます。
// 添加插件设置页面到后台菜单
function myfp_add_admin_menu() {
add_menu_page(
‘我的插件设置’, // 页面标题
‘我的插件’, // 菜单标题
‘manage_options’, // 权限要求
‘myfp-settings’, // 菜单slug
‘myfp_settings_page’, // 用于显示页面内容的回调函数
‘dashicons-admin-generic’, // 图标(可选)
80 // 菜单位置
);
}
add_action( ‘admin_menu’, ‘myfp_add_admin_menu’ );
// 定义设置页面的显示内容
function myfp_settings_page() {
?>
<div class="“wrap”">
<h1><?php esc_html_e( ‘我的插件设置’, ‘my-first-plugin’ ); ?></h1>
<p><?php esc_html_e( ‘这是你的第一个插件设置页面。’, ‘my-first-plugin’ ); ?></p>
<form method="“post”" action="/ja/“options.php”/" data-trp-original-action="“options.php”">
<?php
// 后续可以在这里添加设置字段
settings_fields( ‘myfp_settings_group’ );
do_settings_sections( ‘myfp-settings’ );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="ja"/></form>
</div>
あなたのアカウントは有効です。あなたはログインしています。 プラグインを有効にすると、バックグラウンドの左側に「マイプラグイン」という新しいメニュー項目が表示されます。これをクリックすると、カスタマイズ設定ページにアクセスできます。add_menu_page関数が鍵となり、トップレベルのメニューページを登録しました。
ショートコードを作成してページの機能を強化する
ショートコード(Shortcode)とは、ユーザーが記事やページ内でプラグインの機能を簡単に呼び出せるようにするための強力なツールです。ご利用いただけます。add_shortcode()関数を使ってショートコードを登録します。
// 创建一个显示当前时间的短代码
function myfp_current_time_shortcode( $atts ) {
// 使用 shortcode_atts 设置默认属性并合并用户输入
$attributes = shortcode_atts( array(
‘format’ => ‘Y-m-d H:i:s’,
), $atts );
// 根据属性格式化当前时间
$current_time = date( $attributes[‘format’] );
// 返回要显示的内容,确保进行转义
return ‘<p>現在の時間は:’ . esc_html( $current_time ) . ‘</p>’php
add_shortcode( ‘show_time’, ‘myfp_current_time_shortcode’ ); 現在、ユーザーは記事編集器にテキストを入力することができます。[show_time format=“F j, Y”]現在の日付をフォーマットして表示するためのものです。ショートコード処理器用です。myfp_current_time_shortcode受け取った属性配列を処理し、ページに挿入する必要があるHTMLコンテンツを返します。
推薦図書 WordPressプラグイン開発入門から上級者へ:パーソナライズされたウェブサイトを作成するための完全ガイド。
プラグインのセキュリティとベストプラクティス
プラグインを開発する際には、セキュリティが最優先事項です。セキュリティに欠けたコードはウェブサイトが攻撃される原因となる可能性があります。以下のベストプラクティスに従うことが非常に重要です。
データ検証、エスケープ処理、およびクリーニング
ユーザーや外部ソースからのすべてのデータ(例:$_GET, $_POST, $_COOKIEこれらはすべて信頼できないデータです。データベースのクエリに使用したり、ブラウザに表示する前に、必ず処理を行う必要があります。
- ブラウザに出力する際には、エスケープ関数を使用してください。これにより、データが純テキスト形式で表示され、XSS(クロスサイトスクリプティング)攻撃を防ぐことができます。WordPressでは、さまざまなコンテキストに応じて異なるエスケープ関数が用意されています。
esc_html()(HTML要素内で使用)esc_attr()(HTML属性内に使用)esc_url()(URL用)およびwp_kses_post()(安全なHTMLタグの使用を許可します。) - データベースとのやり取りを行う際には、プレパレートされたステートメントを使用してください。絶対に変数を直接SQLクエリに組み込んではいけません。代わりに、適切な方法で変数を処理し、SQLクエリに含めるべきです。
$wpdb->prepare()より高度なAPIなどの方法もあります。WP_Query例えば:
global $wpdb;
$user_id = 123;
$safe_query = $wpdb->prepare( “SELECT * FROM {$wpdb->prefix}posts WHERE post_author = %d”, $user_id );
$results = $wpdb->get_results( $safe_query ); ここ%dこれは置換文字(placeholder)です。$wpdb->prepare()安全に処理されます。$user_id変数。
設定オプションとセキュリティの実装
プラグインに設定オプションを追加する際には、WordPress Settings APIを使用するべきです。このAPIにより、Nonceの検証や権限チェック、オプションの保存が自動的に処理されるため、セキュリティプロセスが大幅に簡素化されます。
まず、を使用してregister_setting()設定オプショングループを登録した後、それを使用してください。add_settings_section()とadd_settings_field()フィールドを追加します。以前に作成した管理メニューのコールバック関数の中で…myfp_settings_page内部で呼び出された(functionやmethodなど)settings_fields( ‘myfp_settings_group’ )とdo_settings_sections( ‘myfp-settings’ )必要なセキュリティフィールドおよび登録設定項目がすべて表示されます。これは手動で処理するよりもずっと便利です。$_POSTデータははるかに安全で信頼性が高くなる必要があります。
概要
シンプルなプラグインのヘッダーコメントの作成から始め、アクションやフィルターフックを利用してWordPressのコアとやり取りを行い、ショートコードの作成や管理ページの設定まで、プラグイン開発の重要なステップをすでに経験しました。常に「セキュリティ第一」の原則を忘れずに、データに対して厳格な検証やエスケープ処理を行い、WordPressが提供するSettings APIなどのセキュリティツールを積極的に活用してください。プラグイン開発は継続的な学習が必要なプロセスですが、コアコードの読解、公式マニュアルの参照、コミュニティへの参加を通じて、機能的で安全かつ人気のあるWordPressプラグインを作成することができるでしょう。
FAQ よくある質問
プラグイン開発にはPHPに精通している必要がありますか?
はい、確かにPHPのしっかりとした基礎は必要です。なぜならWordPress自体がPHPで書かれているからです。PHPの文法、関数、クラス、名前空間といった概念を理解する必要があります。さらに、HTML、CSS、JavaScriptについても基本的な知識があると、フロントエンド機能の開発に大いに役立ちます。
私のプラグインコードのデバッグ方法は何ですか?
最も効果的な方法は、前述のものを有効にすることです。WP_DEBUG、WP_DEBUG_LOGとWP_DEBUG_DISPLAY。さらに、以下の方法を使用することもできます:error_log()この関数は、カスタムのデバッグ情報をログに書き出すか、Xdebugなどの専門的なデバッグツールを使用して、コードエディタと連携して行番号ごとにデバッグを行います。
私のプラグインに言語翻訳を追加するにはどうすればいいですか?
まず、プラグインのヘッダー部分にあるコメント内で正しく設定を行ってください。Text Domain(例:‘my-first-plugin’)などDomain Path(例:`/languages`)。その後、コード内で翻訳が必要なすべての文字列に対して、以下のように処理を行います:__( ‘Hello World’, ‘my-first-plugin’ )またはesc_html_e( ‘Settings’, ‘my-first-plugin’ )の翻訳機能です。最後に、Poeditなどのツールを使用して翻訳結果を生成します。.potテンプレートファイルを使用して、異なる言語版を作成します。.poと.mo翻訳したファイルを指定された場所に保存してください。/languagesディレクトリ内にあります。
開発したプラグインをWordPressの公式ディレクトリにどのように公開するか?
WordPressの公式プラグインディレクトリにアクセスし、プラグインの提出ページに移動してください。提出する前に、コードがWordPressのコーディングスタンダードに準拠していること、詳細なドキュメントとコメントが含まれていること、そして第三者の商用ライブラリの著作権に関する問題がないことを確認してください。提出後は審査プロセスがあり、審査に合格すれば、あなたのプラグインは世界中のユーザーによって検索やインストールが可能になります。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。