WordPressプラグインの基本構造を理解する
開発を始める前に、WordPressプラグインの核心概念と動作原理を理解することが不可欠です。プラグインとは、WordPressの基本機能を拡張するためのPHPファイルの集まりであり、通常は説明文、実行コード、リソースファイルなどを含んでいます。プラグインの動作は、WordPressが提供するフック(Hook)システムに完全に依存しています。
プラグインの標準的なファイル構造を探求する
標準的なWordPressプラグインは、通常、特定のディレクトリ構造に従っています。メインのプラグインファイルは、例えば… my-first-plugin.phpそれは必ず以下の場所に配置しなければなりません: /wp-content/plugins/ このファイルはディレクトリ内またはそのサブディレクトリにあります。非常に重要なファイルであり、プラグインのヘッダ情報を含んでいます。この情報により、WordPressシステムにプラグインを認識させることができます。
典型的プラグインディレクトリには、以下のような部分が含まれることがあります:メインのプラグインファイル、JavaScriptやCSSなどの静的リソースを格納するためのファイルなどです。 assets/ PHPクラスファイル用のフォルダ includes/ 目次、ユーザーインターフェース用 admin/ と public/ フォルダー、そして翻訳用のファイル languages/ 目次。適切な構造はコードの整理やメンテナンスに役立ちます。特にプラグインの機能が複雑になるにつれてその重要性が増します。
推薦図書 WordPressプラグイン開発入門から上級者へ:カスタム機能を構築するための完全ガイド。
コアのプラグインファイルのヘッダー情報を理解する
すべてのプラグインは、特定のメタ情報(ヘッダー)で始まる必要があります。これらの情報はPHPのコメントブロック内に含まれています。これがWordPressがプラグインを認識するための鍵となります。基本的なフォーマットは以下の通りです:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://www.example.com/my-first-plugin
* Description: 这是一个简短描述,介绍插件功能的句子。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://www.example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ その中で、Plugin Name これは必須項目です。その他の情報は任意ですが、記入することをお勧めします。特に… Text Domain と Domain Pathこれらは、プラグインの国際化(多言語対応)のための準備として用意されています。WordPressはこれらの情報を読み取り、バックエンドの「プラグイン」管理ページに表示します。
ローカル開発環境の構築と最初のプラグインの作成
コーディングを開始する前に、隔離されたかつ迅速に反復開発が可能なローカル開発環境が不可欠です。これにより、オンラインのウェブサイトで直接テストを行う際に生じるリスクを避けることができます。
ローカル開発ツールチェーンの設定
ローカルサーバーを使用した統合環境の利用をお勧めします。例えば、Local by Flywheel、XAMPP、Laragonなどです。これらのツールを使えば、WordPressに必要なPHP、MySQL、ウェブサーバーをワンクリックでインストールできます。また、Visual Studio CodeやPHPStormのようなコードエディタも必要になります。これらのエディタには、構文ハイライト、コードヒント、デバッグ機能などが備わっています。使用するPHPのバージョンは対象サーバーと互換性があることを確認してください。一般的にはPHP 7.4以降のバージョンを推奨します。
シンプルなプラグインを作成し、有効にします。
では、最初の実用的なプラグインを作成しましょう。 /wp-content/plugins/ ディレクトリ内に新しいフォルダを作成し、その名前を「new_folder」とします。 my-first-pluginそのフォルダ内に、「」という名前のファイルを作成してください。 my-first-plugin.php のファイルです。
推薦図書 WordPressプラグイン開発の究極ガイド:ゼロから始めて、あなたの最初のプラグインを作成する。
前のセクションで説明したプラグインのヘッダー情報を、このファイルの冒頭にコピーしてください。次に、記事の内容の最後に自動的にカスタムテキストを追加するというシンプルな機能を追加します。これにはWordPressの「フィルター」(Filter)フックを使用します。ヘッダー情報の下に以下のコードを追加してください:
// 在文章内容后添加自定义文本
function myfp_add_footer_text( $content ) {
// 仅对主循环中的单篇文章生效
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>お読みいただきありがとうございます!この記事は「My First Plugin」のサポートによって作成されました。</em></p>'.
$content .= $custom_text.
}
return $content.
}
// この関数を ‘the_content' フィルタにマウントします。
add_filter( 'the_content', 'myfp_add_footer_text' );; ファイルを保存した後、WordPressの管理画面にログインし、「プラグイン」ページに移動してください。そこに「My First Plugin」という名前の新しいプラグインが表示されているはずです。そのプラグインを「有効にする」をクリックしてください。次に、ウェブサイトの記事を確認してみてください。記事の内容の最後に、私たちが追加したテキストが表示されているはずです。これで、あなたの最初のWordPressプラグインが正常に動作していることになります。
プラグイン開発の核心技術をマスターする
WordPressの強力な拡張性は、いくつかの核心概念に基づいています。それらは「フック(Hooks)」、「オプション(Options)API」、「カスタム記事タイプ(Custom Post Types: CPT)」、そしてデータベース操作です。これらを習得することは、高度な開発を行うための基礎となります。
アクションとフィルターホックの深い理解
フックシステムはWordPressのプラグイン開発において非常に重要な基盤となる要素であり、アクション(Action)とフィルター(Filter)の2種類に分けられます。アクションフックは、ページのヘッダーが読み込まれる際や記事が保存される際など、特定の実行ポイントでトリガーされ、メニューの追加やメールの送信などの処理を行うことができます。 add_action() 関数を使用してマウントします。
例えば、バックエンド管理メニューに新しいページを追加する場合は:
function myfp_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'myfp-settings', // 菜单slug
'myfp_settings_page', // 回调函数,用于显示页面内容
'dashicons-admin-generic', // 图标
20
);
}
add_action( 'admin_menu', 'myfp_add_admin_menu' ); フィルターフックは、データを「変更」することを可能にします。これらはデータが使用される前(例えばブラウザに表示される前やデータベースに保存される前)にデータの流れを遮断し、新しい値に変更してから再送信することができます。私たちの最初のプラグインで使用されたのも、この仕組みです。 the_content それは単なるフィルターフックです。
推薦図書 WooCommerceの徹底解析:ゼロから高性能なeコマースサイトを構築するための完全ガイド。
プラグインの設定をオプションAPIを使用して保存する
プラグインでは通常、APIキーやオン/オフの設定状態などの情報を保存する必要があります。WordPressではこれらの設定を管理するための機能が用意されています。 Options API この種のデータを簡単に処理するための機能が用意されています。主な関数には以下のものが含まれます: add_option(), get_option(), update_option() と delete_option()。
これらの関数を使用するための簡単な設定ページを作成しましょう。まず、上記のメニューコールバック関数を定義します。 myfp_settings_page フォームを表示するには:
function myfp_settings_page() {
?>
<div class="wrap">
<h1>私のプラグイン設定</h1>
<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>
あなたのアカウントは有効です。あなたはログインしています。 その後、あなたは以下の手順を使用する必要があります: register_setting(), add_settings_section() と add_settings_field() これらの設定フィールドを宣言し、初期化するために`set`などの関数を使用します。このプロセスにより、データが安全に保存されます。 wp_options 表の中に。
完全な実戦用プラグインのサンプルを構築する
これまでに学んだ知識を統合して、少し複雑だが実用的なプラグインを作成します。それは「記事の読了時間推定」プラグインで、記事のタイトルの下に予想される読了時間を表示します。
プラグインのメインファイルと機能関数を作成する
新しいプラグインフォルダを作成します。 post-reading-time メインファイルと post-reading-time.php標準的なプラグインヘッダー情報を記入してください。その後、読書時間を計算するためのコア関数を作成します。
function prt_calculate_reading_time( $post_id ) {
// 获取文章内容
$content = get_post_field( 'post_content', $post_id );
// 清除HTML标签和短代码,只计算文字
$text = strip_tags( strip_shortcodes( $content ) );
// 计算字数(中英文混合场景的简单处理)
$word_count = mb_strlen( $text, 'UTF-8' );
// 假设平均阅读速度为每分钟300字(可根据需要调整)
$reading_speed = 300;
// 计算分钟数,至少1分钟
$minutes = floor( $word_count / $reading_speed );
if ( $minutes < 1 ) {
$minutes = 1;
}
// 返回包含时间的字符串
return sprintf( _n( '约 %d 分钟读完', '约 %d 分钟读完', $minutes, 'post-reading-time' ), $minutes );
} フロントエンドでバックエンドの管理機能と連携した情報を表示する
次に、この時間をどのように表示するかを決定する必要があります。一般的な方法は、記事のメタデータ(タイトルの下)に追加することです。 the_content フィルターやトピックが提供する特定のフックです。ここでは、より適切なアクションフックを使用します。 thesis_hook_before_post(テーマによって異なりますが)、あるいはより一般的な方法としては、記事の内容を直接フィルタリングすることです。
より柔軟性を持たせるために、ショートコード(Shortcode)と小さなウィジェット(Widget)を作成し、自動表示するかどうかを制御するための簡単な設定オプションも用意しました。
まず、ショートコードを登録してください:
function prt_reading_time_shortcode( $atts ) {
$atts = shortcode_atts( array(
'id' => get_the_ID(),
), $atts, 'reading_time' );
$time_text = prt_calculate_reading_time( $atts['id'] );
return '<span class="reading-time">'. $time_text .'</span>'php
add_shortcode('reading_time', 'prt_reading_time_shortcode'); その後、結果を自動的に記事の冒頭に追加することができます(フィルターを使用して)。
function prt_prepend_to_content( $content ) {
if ( is_single() && get_option( 'prt_auto_display', '1' ) == '1' ) {
$time_html = '<div class="post-reading-time">' . prt_calculate_reading_time( get_the_ID() ) . '</div>';
$content = $time_html . $content;
}
return $content;
}
add_filter( 'the_content', 'prt_prepend_to_content' ); また、バックエンドで設定オプションを作成する必要があります。 prt_auto_displayユーザーは自動表示機能を有効にするかどうかを選択できるようになりました。これで、機能が完備され、構造が明確なプラグインが完成しました。
概要
プラグインの基本構造やファイルヘッダー情報の理解から始め、段階的に開発環境を構築し、最初のシンプルな機能プラグインを作成しました。WordPressの拡張性の核心であるフックシステムについて深く学び、コアコードを変更することなく実行フローに介入したりデータを変更したりする方法を習得しました。Options APIを利用することで、プラグインに永続的な設定を保存することができます。最後に、「記事の読了時間を推定する」プラグインの完全なサンプルを作成することで、理論知識と実践を組み合わせ、機能ロジックの記述、ショートコードの作成、フロントエンドへの統合に至るまでの完全な開発プロセスを体験しました。優れたプラグイン開発は、明確な計画から始まり、WordPressのコーディング基準を守り、常にセキュリティ、パフォーマンス、ユーザー体験を最優先にすることが大切です。
FAQ よくある質問
WordPressプラグインを開発するには、どのような前提知識が必要ですか?
プラグインのコードは主にPHPで構成されているため、しっかりとしたPHPプログラミングの基礎が必要です。また、HTML、CSS、JavaScriptについても基本的な知識があると、フロントエンドの表示やインタラクションの処理がスムーズになります。MySQLの基本概念に精通していると、WordPressのデータ保存やクエリの仕組みを理解するのに役立ちます。最も重要なのは、WordPressの公式開発マニュアル(Codex)や開発者向けリファレンス(Developer Reference)を読む習慣を身につけることです。
如何确保我开发的插件是安全的?
セキュリティは非常に重要です。ユーザーが入力したデータには常に検証(Validation)と消毒(Sanitization)を行い、出力データにはエスケープ処理(Escaping)を施してください。WordPressが提供する非CE(Nonce)を使用して、クロスサイトリクエストフォージング(CSRF)を防ぎましょう。データベースクエリを構築する際には、必ず適切な処理を行ってください。 $wpdb クラスが提供するメソッド(例えば) prepare()SQLインジェクションを防ぐために、`%s`や`%1$s`、`{{var}}`などのパラメータ置換子を使用することが推奨されます。また、``などの安全でない関数の使用は避けてください。 eval()プラグインを定期的に更新し、既知の脆弱性を修正してください。
プラグインはどのディレクトリに配置すべきですか?
WordPressのプラグインは、必ずウェブサイトの適切な場所に配置する必要があります。 /wp-content/plugins/ ディレクトリ内にです。プラグインのメインPHPファイルをそのディレクトリのルートレベルに直接置くこともできますが、より規則正しい方法は、各プラグインごとに独立したサブフォルダを作成し、関連するすべてのファイル(PHP、JS、CSS、画像など)をそのサブフォルダ内に配置することです。これにより、ファイル構造が明確になり、他のプラグインとの衝突を避けることができます。
どのようにして私のプラグインに設定ページを追加するのでしょうか?
プラグインに設定ページを追加するには、通常いくつかのステップが必要です。まず、 add_action( ‘admin_menu’, ‘your_function’ ) フックを使用して新しい管理メニューやサブメニューアイテムを登録します。その後、コールバック関数内でページのHTMLフォームを出力します。続いて、 register_setting()、add_settings_section() と add_settings_field() Settings API関数を使用して設定フィールドを宣言し、関連付けることで、権限チェック、CE認証の省略、オプションの保存などが自動的に処理されます。最後に、フォーム内でこれらの設定を利用してください。 settings_fields() と do_settings_sections() 関数を使用して必要なフィールドを出力します。
何が「フック(Hook)」なのか、そしてなぜそれがそんなに重要なのでしょうか?
フックとは、WordPressがプラグインやテーマがコアのコード実行フローに「組み込む」ことを許可する特定のポイントのことです。フックにはアクションフック(Actions)とフィルターフック(Filters)の2種類があります。アクションフックは特定のイベントが発生した際にカスタムコードを実行し、新しい機能を追加するために使用されます。フィルターフックは、データが使用される前や保存される前にそれを変更することを可能にします。フックシステムはWordPressの拡張性の核心であり、開発者はコアファイルを変更することなくWordPressの動作を大幅に変更したり強化したりすることができ、コアの純粋性とアップグレード可能性を保証しています。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。