WordPressプラグイン開発入門から上級者へ:あなたの最初の機能付きプラグインを作ろう

3分で読了
2026-03-18
2026-06-03
2,351
以下のリンクからお買い物をしていただくと、コミッションを差し上げます。.

なぜWordPressのプラグイン開発を学ぶべきなのでしょうか?

WordPressは世界で最も人気のあるコンテンツ管理システム(CMS)であり、その強力な拡張性は豊富なプラグインのおかげです。プラグイン開発を学ぶことで、自分のニーズに合わせて機能をカスタマイズするだけでなく、WordPressのコアアーキテクチャを深く理解し、技術レベルを向上させることもできます。さらに、自分のアイデアを実際に公開可能な製品にすることも可能です。自分でプラグインを開発することで、コードの品質を厳密に管理し、ウェブサイトのセキュリティを確保することができるほか、サードパーティ製のプラグインを使用する際に発生する互換性の問題も避けることができます。

基本的WordPressプラグインとは、実質的には特定のディレクトリ内にある1つまたは複数のPHPファイルのことです。このプラグインは、WordPressが提供する豊富なAPI(アクションフック、フィルターフック、ショートコード、ツールなど)を通じてコアシステムと通信します。この仕組みを理解することは、どんなプラグインを成功させるための前提条件です。

開発環境と基盤構造の準備

最初のコード行を書く前に、適切な開発環境を構築することが非常に重要です。ローカルサーバー環境(XAMPP、Local by Flywheel、DevKinstaなど)、コードエディタ(VS CodeやPhpStormなど)、そしてテスト用のWordPressインストールが必要になります。

推薦図書 WordPressプラグイン開発の究極ガイド:核心原理と実践プロジェクトの習得

プラグインの入口となるのは、メインのPHPファイルです。このファイルのヘッダー部分にあるコメントが、WordPressがプラグインを認識するための鍵となります。まずは、プラグインの基本構造を作成しましょう。

UltaHostのWordPressホスティングサービス
30日間の返金保証、無制限の帯域幅とデータベースサービス、無料のDDoS防御機能が付きます。3年契約をすると、501TPから4Tまでのプランで割引が適用されます。

プラグインのメインファイルを作成する

プラグインのメインファイルは通常、プラグインの名前で命名されます。例えば、「私の最初のプラグイン」という名前のプラグインを作成した場合、そのメインファイルの名前は「my_first_plugin.php」となります。my-first-plugin.phpこのファイルは必ず以下の場所に配置する必要があります:/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の管理画面(バックエンド)にある「プラグイン」ページにアクセスしてください。新しく追加されたプラグインがプラグインリストに表示されており、それを有効にすることができます。現時点ではまだ何の機能もありませんが、基本的な枠組みはすでに構築されています。

プラグインの基本的なディレクトリ構造を作成する

構造が明確なプラグインは、長期的なメンテナンスに役立ちます。以下のディレクトリを作成することをお勧めします:
* /assets/CSS、JavaScript、画像などの静的リソースを格納するために使用されます。
* /includes/PHPのコアクラスや関数ファイルを格納するためのディレクトリです。
* /languages/国際化翻訳ファイル(.po/.mo)を格納するためのものです。

推薦図書 Tailwind CSSの原理と精髓:実用性を最優先としたアトミックCSSフレームワークの仕組みを解き明かす

メインファイルmy-first-plugin.phpプラグインは、定数の定義、他のファイルの読み込み、フックの登録など、初期化処理のみを担当すべきです。

コア機能の実装:管理メニューとページの作成

よくあるプラグインの機能の一つに、WordPressの管理画面に管理メニューページを追加するというものがあります。これを実現するために、WordPressの「メニューページAPI」を使用します。

バックエンドにトップレベルのメニューを追加します。

私たちはそれを使用する必要があります。add_menu_page()この関数は通常、以下のような場面で使用されます:admin_menuこのアクションフックがトリガーされたときにこのコードが呼び出されます。メインファイルに以下のコードを追加してください:

hosting.com 共有ホスティング
AMD EPYC CPU、NVMe SSDストレージ、LiteSpeedによる高いパフォーマンス、24時間365日の専門家による社内サポート、SSL、ブルートフォース、マルウェア、DDoS保護などの高度なセキュリティ対策、最大73%のコスト削減
// 定义在管理员菜单初始化时执行的功能
function mfp_add_admin_menu() {
    add_menu_page(
        '我的插件设置',         // 页面标题
        '我的插件',            // 菜单标题
        'manage_options',      // 所需权限
        'my-first-plugin',     // 菜单slug
        'mfp_display_settings_page', // 用于显示页面内容的回调函数
        'dashicons-admin-generic', // 菜单图标(Dashicon)
        6                      // 菜单位置
    );
}
// 将函数挂载到 `admin_menu` 钩子上
add_action('admin_menu', 'mfp_add_admin_menu');

設定ページの表示内容を作成する

上記のコードの中で、mfp_display_settings_pageこれはコールバック関数で、設定ページのHTMLコンテンツを出力する役割を果たします。この関数を定義する必要があります:

// 设置页面的显示内容
function mfp_display_settings_page() {
    // 检查用户权限
    if (!current_user_can('manage_options')) {
        wp_die(__('你没有权限访问此页面。'));
    }
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form action="/ja/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段和安全nonce字段
            settings_fields('mfp_options_group'); // 设置组的名称
            do_settings_sections('my-first-plugin'); // 页面slug
            submit_button('保存设置');
            ?>
        <input type="hidden" name="trp-form-language" value="ja"/></form>
    </div>
    あなたのアカウントは有効です。あなたはログインしています。

このコードは、標準的なWordPressの設定ページのフレームワークを作成しており、その内部で以下のような処理が行われています:settings_fields()do_settings_sections()これは関数を意味しており、つまりWordPressのSettings APIを使用してオプションを管理することになります。これが最も安全で、最も標準的な方法です。

Settings APIを使用してプラグインのオプションを管理します。

直接処理します。$_POSTデータにはセキュリティ上のリスクが存在します。WordPressのSettings APIは、データの検証、セキュリティの確保、および保存を自動的に処理してくれるため、プラグインの設定を管理するための最適な方法です。

推薦図書 WooCommerceプラグインの究極ガイド:ゼロからプロフェッショナルな越境Eコマース専用サイトの構築

登録設定、フィールド、およびセクション

私たちは必要としています。admin_initフック内で設定を初期化します。まず、以下のコードを使用してください:register_setting()登録する設定オプションです。

function mfp_register_settings() {
    // 注册一个设置:`mfp_options` 是存储在`wp_options`表中的键名
    register_setting(
        'mfp_options_group', // 设置组名,需与`settings_fields()`参数一致
        'mfp_options',       // 选项名
        'mfp_sanitize_options' // 可选:数据清洗回调函数
    );

// 添加一个设置章节
    add_settings_section(
        'mfp_main_section',                // 章节ID
        '主要设置',                         // 章节标题
        'mfp_main_section_callback',       // 章节介绍的回调函数
        'my-first-plugin'                  // 所属页面slug
    );

// 在章节中添加一个文本字段
    add_settings_field(
        'mfp_text_field',                  // 字段ID
        '示例文本',                         // 字段标签
        'mfp_text_field_callback',         // 用于渲染字段HTML的回调函数
        'my-first-plugin',                 // 所属页面slug
        'mfp_main_section'                 // 所属章节ID
    );
}
add_action('admin_init', 'mfp_register_settings');

フィールドのレンダリングとクリーニング機能を定義する

現在、上記で使用された各コールバック関数を定義する必要があります。これらの関数は、フィールドのHTML表示やデータのクリーニングのために使用されます。

インターサーバー共有ホスティング
共有ホスティング月$2.50米ドル, 最初の月$0.1米ドルプロモーションコードtryinterserver, 461クラウドアプリケーションスクリプト, 1クリックインストール.
// 主章节的描述文本
function mfp_main_section_callback() {
    echo '<p>ここがプラグインの主な設定領域です。</p>';
}

// 文本字段的HTML输出
function mfp_text_field_callback() {
    // 从数据库获取现有值
    $options = get_option('mfp_options');
    $value = $options['mfp_text_field'] ?? ''; // PHP 7.0+ 空合并运算符
    echo '<input type="text" name="mfp_options[mfp_text_field]" value="' . esc_attr($value) . '" class="regular-text">';
}

// 数据清洗函数(可选但推荐)
function mfp_sanitize_options($input) {
    $sanitized_input = [];
    if (isset($input['mfp_text_field'])) {
        // 对文本字段进行基本的清洗,如去除标签
        $sanitized_input['mfp_text_field'] = sanitize_text_field($input['mfp_text_field']);
    }
    return $sanitized_input;
}

これで、セキュリティ設定ページを備えた完全なプラグインが完成しました。プラグインを有効にすると、WordPressの管理画面に「My Plugins」(私のプラグイン)メニューが表示されます。そこをクリックすると、テキスト形式の設定項目を編集・保存することができます。すべてのデータはWordPress APIを通じて安全に保存されます。wp_options表の中に。

プラグインにフロントエンド機能を追加する:ショートコードの作成

バックエンド機能は基盤となるものですが、プラグインも通常、ウェブサイトのフロントエンドに影響を与える必要があります。ショートコード(Shortcode)を作成することは、プラグインの機能を記事、ページ、または小道具(ツール)に表示するための優れた方法です。

シンプルなショートコードを登録しましょう。

我们注册一个名为[my_greeting]これは、フロントエンドで挨拶文を表示するための短いコードです。使用方法は以下の通りです:add_shortcode()関数。

メインファイルまたは専用の機能ファイルに以下の内容を追加してください:

// 注册短代码
function mfp_greeting_shortcode($atts, $content = null) {
    // 使用shortcode_atts设置默认属性并合并用户输入
    $atts = shortcode_atts(
        array(
            'name' =&gt; '访客', // 默认值
        ),
        $atts,
        'my_greeting' // 短代码名称
    );

// 获取插件选项中存储的文本
    $options = get_option('mfp_options');
    $custom_text = $options['mfp_text_field'] ?? '';

// 构造输出
    $output = '<div class="mfp-greeting">'$output = '<p>こんにちは、' . esc_html($atts['name']) . '!当サイトにようこそ。</p>';
    if (!empty($custom_text)) {
        $output .= '<p><strong>カスタムメッセージ:</strong>'`. esc_html($custom_text)`.'</p>'$output = '</div>';

// 返回输出内容,而不是直接echo
    return $output;
}
add_shortcode('my_greeting', 'mfp_greeting_shortcode');

現在、ユーザーは記事編集器にテキストを入力することができます。[my_greeting name="张三"]フロントエンドではパーソナライズされた挨拶メッセージがレンダリングされ、もしバックエンドで「例文」といったテキストが設定されていれば、それも一緒に表示されます。この方法により、バックエンドでの設定内容がフロントエンドの出力と効果的に連携しています。

概要

以上の手順を通じて、完全な機能を備えたWordPressプラグインを完成させました。私たちはゼロから始めて、プラグインの基本ファイルと構造を作成し、必要なコードを記述しました。add_menu_page()Settings APIを使用して安全なバックエンド設定ページを構築し、それを通じて…add_shortcode()フロントエンド機能の出力が実現しました。このプロセスには、プラグイン開発の核心的な流れが含まれています:計画、初期化、バックエンドAPIの統合、データ処理、フロントエンドインターフェースの提供です。

これらの基礎知識をしっかりとマスターしたら、カスタムの記事タイプの作成、メタデータ(Meta Box)の設定、カスタムデータベーステーブルの作成、REST APIエンドポイントの構築、AJAX処理、プラグインの国際化など、より高度なトピックに取り組むことができます。WordPressのコーディングスタンダードとベストプラクティスに従うことが、高品質でメンテナンスしやすいプラグインを開発するための鍵となることを忘れないでください。

FAQ よくある質問

プラグイン開発には、どのようなPHPの知識が必要なのでしょうか?

少なくともPHPの基本文法をマスターする必要があります。これには変数、配列、関数、条件分岐、ループなどが含まれます。オブジェクト指向プログラミング(OOP)の知識は、中規模から大規模なプラグインを構築する際に非常に役立ちます。さらに、WordPressがプラグインをどのように読み込むか、そしてグローバル変数や関数を安全に使用する方法を理解している必要があります。

如何调试自己开发的WordPress插件

まず、確認してください。wp-config.phpファイルを開くWP_DEBUGWP_DEBUG_LOGこのようにすると、エラーメッセージがログファイルに記録されます。次に、以下の方法を利用することができます:error_log()関数はデバッグ情報を出力します。複雑なロジックについては、Xdebugなどの専門的なデバッグツールを使用してコードを段階的に実行することができます。

プラグインを開発する際に、その安全性を確保するためにはどのようなことをすればよいでしょうか?

ユーザーの入力内容については常に検証とクリーニングを行う必要があります。WordPressに組み込まれている関数を利用するとよいでしょう。esc_html(), esc_attr(), sanitize_text_field()wp_kses()出力の処理を行います。CE(Common Encoding)ではない方法を使用してください。wp_nonce_field()これはクロスサイトリクエストフォージング(CSRF)を防ぐためのものです。データベース操作には、以下の方法を使用してください:$wpdbクラスが提供するメソッド、またはその使用方法prepare()SQLインジェクションを防ぐための文です。

プラグインはローカルに保存すべきか、それともオンラインサーバー上で開発すべきか?

主要な開発作業は、ローカル開発環境(LocalやXAMPPなど)で行うことを強くお勧めします。ローカル環境ではレスポンスが速く、ネットワークの影響を受けません。また、自由にテストや変更を加えてもオンラインサイトに影響を与えることはありません。機能が基本的に完成したら、オンラインテスト環境にデプロイして最終的な互換性テストを行ってください。

如何将自己的插件发布到WordPress官方目录

WordPress.orgにアクセスし、開発者アカウントを登録してください。その後、Subversion(SVN)を使用してプラグインのコードを送信してください。プラグインは公式のコード基準およびディレクトリ構造の要件を満たしていなければならず、正しい内容を含んでいる必要があります。readme.txtファイルです。審査が通過すると、世界中のユーザーがバックエンドから直接あなたのプラグインを検索してインストールすることができるようになります。