WordPressプラグイン開発環境の準備
コードの執筆を始める前に、安定したかつ隔離された開発環境を用意することが非常に重要です。これにより、本番サイトを保護するだけでなく、自由にテストやデバッグを行うことができます。最も推奨される方法は、Local by Flywheel、XAMPP、MAMPなどのローカル開発環境を使用することです。これらのツールを使えば、ワンクリックでローカルコンピューターにWordPressで必要なPHP、MySQL、ウェブサーバーをインストールできます。
次に、ローカルのWordPressインストールでデバッグモードを有効にする必要があります。これにより、開発中にエラーを迅速に発見することができます。WordPressのルートディレクトリ内にあるファイルを開いてください。 wp-config.php ファイル内で、以下の定数定義を見つけるか追加してください:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false ); この設定により、すべてのエラーや警告メッセージが記録されます。 /wp-content/debug.log そのファイルはページ上に直接表示されることはなく、フロントエンドのユーザーに影響を与えません。
推薦図書 WordPressプラグイン開発入門ガイド:ゼロから最初のカスタムプラグインを作成する方法。
最後に、コードエディタが必要です。Visual Studio Code、PhpStorm、Sublime Textなどはどれも優れた選択肢であり、PHPやWordPressの開発において優れた構文ハイライト機能やコードヒントのサポートを提供しています。エディタがローカルサーバー上のプロジェクトファイルに簡単にアクセスできるようにしておいてください。
あなたの最初のプラグインを作成する。
WordPressのプラグインとは、本質的には1つまたは複数のコードファイルで構成されており、それらはWordPressのソースコードに組み込まれることで、サイトの機能を拡張したり、新しい機能を追加したりするものです。 wp-content/plugins ディレクトリ内にあるPHPファイルです。各プラグインにはメインファイルが必要であり、そのファイルのヘッダーには標準的なプラグイン情報のコメントを含める必要があります。これにより、WordPressがそのプラグインを認識できるようになります。
プラグインのヘッダー情報を作成する
あなたの wp-content/plugins ディレクトリ内に新しいフォルダを作成します。例えば、 my-first-pluginそのフォルダ内に、メインファイルを作成してください。 my-first-plugin.phpファイルの冒頭には、以下の形式のコメントを含めなければなりません:
<?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
*/ このコメント内の「Plugin Name」は必須項目であり、その他の項目はすべてオプションです。WordPressはこれらの情報を読み取り、バックエンドの「プラグイン」管理ページに表示します。
シンプルな機能を実装する
では、このプラグインに最初の実用的な機能を追加しましょう:記事の内容の最後に自動的にカスタムテキストを追加する機能です。そのために、以下の手順を実行します… the_content このフィルターフック(Filter Hook)です。
推薦図書 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の管理画面にある「プラグイン」ページにアクセスすると、「My First Plugin」というプラグインが表示されるはずです。それを有効にしてから、ウェブサイトの記事を確認してください。記事の末尾に、私たちが定義したテキストが追加されているはずです。このコードの中で…myfp_add_text_to_content これは私たちが定義した関数です。add_filter() それをマウントしてください。 the_content フックの上にあります。関数内の条件判断により、このテキストはフロントエンドの個別の記事ページのメインループ内でのみ表示されるようになっています。
WordPressプラグインの核心的な仕組みを理解する
WordPressプラグインの強力で柔軟な基盤となっているのが、その「フック(Hooks)」メカニズムです。フックを利用すると、WordPressのコアコードが実行される特定のポイントに自分のコードを挿入することができ、デフォルトの動作を変更したり拡張したりすることができます。フックには主に2種類あります:アクションフック(Action Hooks)とフィルターフック(Filter Hooks)です。
アクションフックとフィルターフック
アクションフック(Action)を使用すると、特定のイベントが発生した際にカスタムコードを実行することができます。例えば、記事を公開した後や管理ページを読み込んだときなどです。返り値の指定は不要です。 add_action() 関数を使用してモジュールをマウントします。例えば、プラグインが有効になったときに何らかの操作を実行する場合などです。
function myfp_plugin_activation_task() {
// 创建数据库表、初始化选项等
update_option( 'myfp_plugin_installed', '2026-01-01' );
}
register_activation_hook( __FILE__, 'myfp_plugin_activation_task' ); ここでは「%s」が使用されています。 register_activation_hookこれは特別なアクションフックで、プラグインの有効化のために専用に設計されています。
「フィルターフック(Filter)」を使用すると、そのフックに渡されたデータを変更することができます。フィルターフックでは、関数に値を受け取るよう要求され、変更後の値を返す必要があります。以前に記事の内容を変更した例が、典型的なフィルターの使用例です。もう一つの例としては、記事の抜粋の長さを変更するケースがあります。
推薦図書 WordPressプラグイン開発をマスターする:ゼロからワンまでの完全な実践ガイド。
function myfp_custom_excerpt_length( $length ) {
return 20; // 将摘录长度改为20个单词
}
add_filter( 'excerpt_length', 'myfp_custom_excerpt_length' ); ショートコードを使用して動的コンテンツを追加する
フック(Hook)に加えて、ショートコード(Shortcode)もプラグインとコンテンツが相互作用するための強力なツールです。これにより、ユーザーは記事やページに簡単なタグを挿入するだけで、さまざまな機能を実現することができます。 [my_shortcode]プラグインによって生成された複雑なコンテンツを呼び出すために使用されます。
短いコードを作成するのは非常に簡単です。使用するには… add_shortcode() 関数です。例えば、現在時刻を表示するための簡単なコードを作成する方法は以下の通りです:
function myfp_current_time_shortcode( $atts ) {
$atts = shortcode_atts( array(
'format' => 'Y-m-d H:i:s',
), $atts, 'current_time' );
return date( $atts['format'] );
}
add_shortcode( 'current_time', 'myfp_current_time_shortcode' ); ユーザーはエディターにテキストを入力することができます。 [current_time format="H:i"] 時間と分のみを表示するようにしてください。
プラグインに管理ページを追加する
多くのプラグインでは設定オプションの提供が必要であり、これは通常、WordPressの管理バックエンドにあるメニューページを通じて実現されます。WordPressには、トップメニューやサブメニューアイテムを追加するための一連の関数が用意されています。
プラグイン設定ページを作成します。
プラグインには、記事の末尾に追加されたテキスト内容を管理するための簡単な設定ページを追加します。まず、以下の手順に従ってください: add_menu_page() または add_options_page() ページを登録するための関数があります。通常、シンプルなプラグインではそのページを「設定」のサブメニューに追加します。
プラグインのメインファイルに以下のコードを追加してください:
function myfp_add_admin_menu() {
add_options_page(
'我的第一个插件设置', // 页面标题
'我的插件设置', // 菜单标题
'manage_options', // 所需权限
'myfp-settings', // 菜单slug
'myfp_settings_page_html' // 用于输出页面内容的回调函数
);
}
add_action( 'admin_menu', 'myfp_add_admin_menu' ); このコードはWordPressに対し、バックエンド管理メニューを構築する際に以下のことを指示します:admin_menu (アクション)を実行します。 myfp_add_admin_menu 関数を使ってページを追加します。
構築設定ページのフォームを作成する
次に、定義する必要があります。 myfp_settings_page_html この関数は、ページのHTMLコンテンツを生成し、フォームの保存処理を行います。設定を安全に保存するために、WordPressを使用しています。 options API。
function myfp_settings_page_html() {
// 检查用户权限
if ( !current_user_can( 'manage_options' ) ) {
return;
}
// 处理表单提交
if ( isset( $_POST['myfp_footer_text'] ) ) {
update_option( 'myfp_footer_text', sanitize_textarea_field( $_POST['myfp_footer_text'] ) );
echo '<div class="notice notice-success"><p>設定が保存されました!</p></div>';
}
// 获取现有值
$current_text = get_option( 'myfp_footer_text', '感谢阅读本文,由“我的第一个插件”为您呈现。' );
?>
<div class="wrap">
<h1>私の最初のプラグインの設定</h1>
<form method="post" action="">
<?php wp_nonce_field( 'myfp_settings_action', 'myfp_settings_nonce' ); ?>
<table class="form-table">
<tr>
<th scope="row"><label for="footer_text">記事のフッターテキスト</label></th>
<td>
<textarea name="myfp_footer_text" id="footer_text" rows="4" cols="50" class="large-text"><?php echo esc_textarea( $current_text ); ?></textarea>
<p class="description">このテキストは、すべての記事の末尾に表示されます。</p>
</td>
</tr>
</table>
<?php submit_button(); ?>
<input type="hidden" name="trp-form-language" value="ja"/></form>
</div>
あなたのアカウントは有効です。あなたはログインしています。 最後に、以前に記事の内容をフィルタリングしていた関数を修正することを忘れないでください。その関数をオプションに基づいて動作するように変更してください。 myfp_footer_text テキストはファイルから読み取られ、ハードコードされた文字列は使用されません。これで、基本的な管理機能を備えたバックエンド設定ページが完成します。
概要
この記事の手順に従って、あなたはゼロから完全な機能を持つWordPressプラグインを作成しました。開発環境の構築方法、プラグインの基本構造の作成方法、WordPressのコアにあるフックメカニズム(アクションとフィルター)を利用して機能を拡張する方法、ショートコードの実装方法、そしてバックエンド管理インターフェースの作成方法を学びました。プラグイン開発の鍵は、フックとイベント駆動の仕組みを理解することにあります。これにより、コアコードを変更することなくWordPressの動作を深くカスタマイズすることができます。良質なコード構造、安全な入出力処理、そして国際化への対応は、高品質なプラグインを開発するための基本です。次に、プラグインにさらなる機能を追加してみることができます。例えば、カスタムの記事タイプの追加、ツールの作成、REST APIエンドポイントの実装などです。WordPressエコシステムの無限の可能性を探求し続けてください。
FAQ よくある質問
プラグインには必ずしも1つのPHPファイルしか必要ありません。複数のPHPファイルを含むこともできます。ただし、プラグインの構造と機能に応じて、適切なファイル分割や管理方法を考える必要があります。
必ずしもそうとは限りません。プラグインは単一のPHPファイルで構成されることもありますが、複雑なプラグインにはモジュール化された構造を採用することをお勧めします。異なる機能を別々のクラスやファイルに分け、メインファイルではこれらのファイルを読み込んでプラグインを初期化するだけにすると、コードのメンテナンスや管理が容易になります。例えば、次のようにすることができます: includes/ ディレクトリには機能クラスが保存されています。admin/ ディレクトリにはバックエンド関連のコードが保存されています。public/ ディレクトリにはフロントエンドのロジックが保存されています。
プラグイン内でユーザー入力を安全に処理するにはどうすればよいですか?
ユーザーからの入力(フォームデータやURLパラメータなど)を処理する際には、必ず検証(Validation)、クリーニング(Sanitization)、エスケープ処理(Escaping)を行う必要があります。データベースに保存するデータについては、以下のような対策を講じるべきです: sanitize_text_field()、sanitize_textarea_field()、intval() などの関数を使ってデータをクリーンアップします。データをHTMLページに出力する際には、 esc_html()、esc_attr()、esc_url() または wp_kses() エスケープ処理を行い、クロスサイトスクリプティング(XSS)攻撃を防ぎます。
プラグイン開発中にコードをデバッグするにはどうすればよいですか?
「有効にする」以外にも… WP_DEBUG さらに、以下の方法も利用できます: error_log() この関数は、カスタム情報をデバッグログに記録します。変数の値を確認するために…var_dump() または print_r() 組み合わせる die() それは迅速な方法ですが、あまり洗練されていません。WordPressに内蔵されている機能を使うことをお勧めします。 wp_die() と wp_send_json()(AJAXデバッグ用です)。さらに、Query Monitorなどの専門的なデバッグプラグインを使用すると、データベースクエリやフック、スクリプトなどの実行時情報をより直感的に確認することができます。
どうやって私のプラグインを多言語対応にできるようにするか?
プラグインに国際化(i18n)機能を追加するには、WordPressの翻訳関連の関数を使用する必要があります。まず、プラグインのヘッダー部分にあるコメント内で、必要な設定を正しく行ってください。 Text Domain(例:`my-first-plugin`)。コード内では、ユーザーに表示されるすべての文字列に対してこの規則を適用してください。 () または _e() 関数をラップ(encapsulate)する例: ( ‘Hello World’, ‘my-first-plugin’ )その後、Poeditなどのツールを使用して生成します。 .pot テンプレートファイルを使用することで、翻訳者はそれに基づいて異なる言語のコンテンツを作成することができます。 .po と .mo そのファイルは、プラグイン内に保存されています。 languages/ フォルダの中にあります。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。