ゼロから始める:WordPressプラグイン開発の完全なガイドと実践的なチュートリアル

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

なぜ自分でWordPressプラグインを開発する必要があるのでしょうか?

WordPressのコア機能は非常に強力ですが、多様化するビジネスニーズに対応するには、プリセットされた機能だけでは十分とは限りません。カスタムプラグインを開発することで、WordPressのコアファイルを変更することなくウェブサイトに独自の機能を追加することができ、これによりウェブサイトの安定性とアップグレード可能性が保たれます。シンプルな連絡フォームの作成、複雑な製品展示システムの構築、または第三者APIとの統合など、プラグインは最も柔軟で標準的な実装方法です。

プラグインを開発することで、機能をモジュール化し、異なるサイト間での再利用や配布を容易にすることができます。これにより開発効率が向上するだけでなく、WordPressのアーキテクチャやPHPプログラミングについて深く理解するための優れた方法ともなります。プラグイン開発のスキルを身につければ、どんなアイデアでも実際のウェブサイト機能として実現できるようになります。

自分で初めてのWordPressプラグインを作ってみましょう。

WordPressプラグインを作成するには、まずシンプルなフォルダとメインファイルから始めます。すべてのプラグインコードは、このフォルダ内に保存されます。/wp-content/plugins/ディレクトリ内にあります。

推薦図書 WordPressテーマ開発入門ガイド:ゼロからカスタムテーマを作成する方法

プラグインのメインファイルを作成します。

プラグインのメインファイルはそのプラグインの「心臓部」であり、プラグインに関するメタ情報が含まれています。まず、/wp-content/plugins/カタログの下に新しいフォルダを作成してください。例えば、my-first-pluginその後、そのフォルダ内にメインのPHPファイルを作成します。このファイルの名前は通常、フォルダの名前と同じになります。my-first-plugin.php

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

このメインファイルのヘッダー部分に、WordPressにあなたのプラグインについて説明するための標準的なプラグインコメントを追加する必要があります。これは、プラグインがWordPressに認識され、管理画面に表示されるための鍵となります。

<?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
 */

ファイルを保存した後、WordPressの管理画面にログインし、「プラグイン」ページに移動してください。そこでは「My First Plugin」というプラグインがプラグインリストに表示されているはずです。このプラグインを有効にしてください。まだ何の機能もありませんが、あなたの最初のプラグインフレームワークは完成しています。

プラグインに基本機能を追加する

機能のないプラグインには意味がありません。それに簡単な機能を追加しましょう:ウェブサイトのフッターにカスタムテキストを表示する機能です。これにはWordPressの「フック(Hook)」メカニズムを使用します。

私たちはそれを使用することができます。wp_footerこのアクションフック。プラグインのメインファイルで。my-first-plugin.phpのヘッダーコメントの下に、以下のコードを追加してください:

推薦図書 高品質なWordPressプラグインを選択し、開発する方法:入門から上級者までのガイド

// サイトのフッターにカスタムテキストを出力する
関数 my_first_plugin_add_footer_text() {
    echo '<p style="text-align: center; color: #666;">私の最初のWordPressプラグインをご利用いただき、ありがとうございます!</p>';
}
add_action( 'wp_footer', 'my_first_plugin_add_footer_text' );;

ファイルを保存した後、ウェブサイトのフロントエンドを更新し、ページの下部までスクロールしてください。そうすると、追加したテキストが表示されるはずです。この簡単な例を通じて、プラグイン開発の核心的なパターンを実践しました:関数を定義し、それを使って…add_action()またはadd_filter()それをWordPressの特定のフックにマウントします。

WordPressプラグインの核心メカニズムを理解する:フックとフィルター

WordPressの柔軟性と拡張性は、その「フック(Hooks)」システムに大きく依存しています。フックを利用することで、開発者はWordPressのコアコードが実行される特定のタイミングに自分のコードを挿入することができます。フックには主に2種類あります:アクション(Actions)とフィルター(Filters)です。

アクションフックは、特定のイベントが発生したときにコードを実行します。例えば、記事を公開したり、フッターを読み込んだりするときです。アクションフックは返り値を期待しませんので、主に何らかの操作を実行するために使用されます。先ほど私たちが使用したのもその例です。wp_footerそれは単なるアクションフック(action hook)に過ぎません。

hosting.com 共有ホスティング
AMD EPYC CPU、NVMe SSDストレージ、LiteSpeedによる高いパフォーマンス、24時間365日の専門家による社内サポート、SSL、ブルートフォース、マルウェア、DDoS保護などの高度なセキュリティ対策、最大73%のコスト削減

フィルターフックはデータを変更するために使用されます。これにより、データが使用される前(例えばデータベースに保存されたり、ブラウザに出力されたりする前)に、そのデータを修正することができます。フィルター関数は値を受け取り、修正後の値を返す必要があります。

アクションフックを使用して管理メニューを追加する

機能が充実したプラグインでは、通常、WordPressの管理画面のサイドバーに独自のメニューページを追加する必要があります。これは以下の方法で実現できます:admin_menuこのアクションフックを使って実現します。

// バックエンドの管理メニューに新しいページを追加する
関数 my_first_plugin_add_admin_menu() {
    add_menu_page(
        'マイプラグイン設定', // ページタイトル
        'My Plugins', // メニューのタイトル
        'manage_options', // 必須パーミッション
        'my-first-plugin', // メニュースラッグ
        'my_first_plugin_settings_page', // ページ内容を表示するコールバック関数
        'dashicons-admin-generic', // アイコン (オプション)
        80 // メニューの位置
    );
}
add_action( 'admin_menu', 'my_first_plugin_add_admin_menu' );

// 設定ページの内容を定義する
function my_first_plugin_settings_page() { ?
    ?&gt;
    <div class="wrap">
        <h1>私の最初のプラグインの設定</h1>
        <p>プラグインの設定ページへようこそ。ここでは様々な設定オプションを追加することができます。</p>
        <form method="post" action="/ja/options.php/" data-trp-original-action="options.php">
            <!-- 未来可以在这里添加设置字段 -->
            <?php submit_button(); ?>
        <input type="hidden" name="trp-form-language" value="ja"/></form>
    </div>
    あなたのアカウントは有効です。あなたはログインしています。

フィルターを使って記事の内容を変更する。

假设我们想自动在每篇文章的末尾添加一段版权声明,过滤器钩子the_contentそれが役に立ちました。

推薦図書 高品質なWordPressプラグインを選択し、開発する方法:入門から上級まで

// 記事コンテンツの最後に著作権表示を自動的に追加します。
function my_first_plugin_add_copyright( $content ) { // この処理は、メインループ内の1つの記事ページでのみ行うようにします。
    // これがメインループ内の単一の記事ページでのみ実行されることを確認する
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) { // この処理は、メインループ内の単一の記事ページでのみ行われるようにします。
        $copyright_text = '<div class="plugin-copyright"><p><em>この記事の著作権は当サイトに帰属しています。転載する場合は出典を明記してください。</em></p></div>'.
        $content .= $copyright_text。
    }
    return $content; // 修正されたコンテンツを返す必要があります。
}
add_filter( 'the_content', 'my_first_plugin_add_copyright' ).;

プラグインのセキュリティとベストプラクティス

プラグインを開発する際、セキュリティは最優先事項です。セキュリティに欠けるプラグインは、ウェブサイト全体の脆弱性となる可能性があります。

データの検証、クリーニング、およびエスケープ処理

ユーザーが入力したデータや外部からのデータを絶対に信じてはいけません。すべてのデータには何らかのリスクが潜んでいる可能性があります。$_GET$_POST$_COOKIEまた、データベースに保存されているデータも、使用する前に必ず検証およびクリーニングを行う必要があります。

インターサーバー共有ホスティング
共有ホスティング月$2.50米ドル, 最初の月$0.1米ドルプロモーションコードtryinterserver, 461クラウドアプリケーションスクリプト, 1クリックインストール.
  • 验证(Validation):检查数据是否符合预期的格式(如是否为邮箱、数字等)。可以使用filter_var()関数またはsanitize_*()シリーズ関数。
  • 清理(Sanitization):清除数据中非法或不安全的字符。例如,对于文本输入,使用sanitize_text_field()
  • エスケープ(Escaping):データをHTML、JavaScript、またはURLに出力する際には、特殊な文字が正しくエンコードされていることを確認し、XSS攻撃を防ぐ必要があります。esc_html()esc_js()esc_url()などの関数です。
// 不安全的做法
echo $_GET['user_input'];

// 安全的做法:先清理,再转义
$safe_input = sanitize_text_field( $_GET['user_input'] );
echo esc_html( $safe_input );

WordPressでCE(Content Encryption)および権限チェックを使用しない方法

フォームの送信を処理する際(特にデータの変更や削除が関わる場合)、必ず以下の方法を使用しなければなりません:wp_nonce(一回限りの数字)これによりリクエストの正当性を確認し、CSRF攻撃を防ぎます。また、現在のユーザーがその操作を実行する権限を持っているかも確認する必要があります。

// 在处理表单提交时检查权限和nonce
function my_first_plugin_handle_form_submit() {
    // 1. 检查nonce
    if ( ! isset( $_POST['my_plugin_nonce'] ) || ! wp_verify_nonce( $_POST['my_plugin_nonce'], 'my_plugin_action' ) ) {
        wp_die( '安全校验失败!' );
    }

// 2. 检查用户权限
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足!' );
    }

// 3. 清理和保存数据(此处省略)
    // ...
}

プラグインの公開を準備しています。

プラグインの機能が完備し、テストにも合格したら、他のWordPressユーザーと共有することを検討してください。

国際化(Internationalization)とローカライゼーション(Localization)の準備

世界中のユーザーがあなたのプラグインを利用できるようにするためには、国際化(i18n)の対応が必要です。つまり、ユーザーに表示されるすべてのテキストはWordPressの翻訳機能を使用して処理されるべきです。そのための設定は、プラグインのヘッダー部分にあるコメントで既に指定されています。Text Domain: my-first-plugin

コード内で使用するには、該当する部分にそのコードを記述します。具体的な方法は、使用しているプログラミング言語やフレームワークによって異なります。__()関数を使用して文字列を翻訳し、その結果を返します。_e()「function to translate and output directly」

// 前のフッター出力のテキストを翻訳可能に変更する
関数 my_first_plugin_add_footer_text_i18n() {
    $text = __( '初めてのWordPressプラグインを使ってくれてありがとう!, 'my-first-plugin' );
    echo '<p style="text-align: center; color: #666;">'`. esc_html($text).`'</p>';
}
add_action( 'wp_footer', 'my_first_plugin_add_footer_text_i18n' );;

その後、Poeditのようなツールを使用して作成することができます。.potテンプレートファイルをもとに、翻訳者は異なる言語版を作成することができます。.po.moファイル。

プラグインのメタデータとreadmeファイルを改善する。

もしプラグインをWordPressの公式プラグインディレクトリに提出する予定であれば、標準に準拠したものを作成する必要があります。readme.txtこのファイルは特定のMarkdown形式を使用しており、WordPress.org上でプラグインの説明、インストール手順、スクリーンショット、アップデート履歴などの情報を表示するために使用されます。

同時に、プラグインのメインファイルのヘッダー部分にあるメタ情報(特にバージョン番号)が完全で正確であることを確認してください。セマンティックなバージョン管理(semantic versioning)の仕組みに従ってください。MAJOR.MINOR.PATCHそれは良い習慣です。

概要

WordPressプラグイン開発とは、アイデアを強力なウェブサイト機能に変えていくプロセスです。まずは最も基本的なプラグインファイルの作成から始め、WordPressの強力なフックシステム(アクションとフィルター)を使ってコードを挿入したり、バックエンドメニューを追加したり、コンテンツを変更したりする方法を段階的に学びました。さらに重要なのは、プラグイン開発において極めて重要なセキュリティ対策について深く掘り下げたことです。データの検証、クリーニング、エスケープ処理、権限チェックなどが、プラグインが信頼性を持ち、悪用されないようにするための基盤となります。

最後に、プラグイン開発の次のステップである国際化の準備とリリースプロセスについて説明しました。これらの核心概念とスキルをマスターすることで、どんなWordPressプロジェクトにもカスタマイズされたソリューションを提供する能力が身につきます。覚えておいてください——最も効果的な学習方法は実践することです。簡単なニーズから始めて、徐々にプラグインの機能を拡張していきましょう。

FAQ よくある質問

WordPressプラグインを開発するには、以下のような基礎知識が必要です:

WordPressプラグインを開発するには、PHPプログラミング言語の基礎知識が必要です。なぜなら、プラグインのコードは主にPHPで書かれているからです。また、HTML、CSS、JavaScriptについても基本的な理解が必要であり、これらはフロントエンドのインターフェースやユーザーインタラクションの構築に使用されます。最も重要なのは、WordPressの基本アーキテクチャを理解することです。特に、プラグインがWordPressのコアシステムと通信するための主要な手段である「フック(Hooks)」システムについてです。

プラグインとテーマのfunctions.phpファイルの違いは何ですか?

テーマに関するfunctions.phpこのファイルは、特定のテーマの外観や機能に関連するコードを追加するために使用されますが、そのコードはテーマが切り替わると無効になります。一方、プラグインはテーマとは独立した機能モジュールであり、どのテーマを使用してもプラグインが有効になっていればその機能は常に動作します。一般的な機能はプラグインに格納するのが良い方法です。そうすることで、機能の独立性と移植性が保たれるからです。

私のWordPressプラグインをどのようにデバッグするのか。

まず、確認してください。wp-config.phpファイルを開くWP_DEBUGこのモードでは、PHPのエラーや警告が画面上に表示されます。使用してください。error_log()この関数はデバッグ情報をサーバーのエラーログに書き込みます。さらに、ブラウザの開発者ツールにある「コンソール」や「ネットワーク」パネルを利用して、JavaScriptやAJAXリクエストのデバッグを行うことができます。複雑なロジックについては、var_dump()またはprint_r()出力変数の値を表示しますが、公開する前にこれらのデバッグコードは必ず削除してください。

私のプラグインはどのようにしてデータベースとやり取りをするのでしょうか?

WordPressは以下のような機能を提供しています:$wpdb安全なデータベース操作を行うために、グローバルオブジェクトが使用されています。このオブジェクトはSQLクエリをカプセル化し、データのクリーニング機能も提供しています。カスタムデータテーブルの作成、更新、削除については、プラグインが有効になっている間に使用することをお勧めします。dbDelta()関数についてですが、ほとんどの設定データに対しては、WordPressのOptions APIを使用する方がより簡単で安全です。add_option(), update_option(), get_option()キー値ペアを保存するために使用されます。

自分のプラグインに設定可能なページを作成するには、どのようにすればよいでしょうか?

設定ページを作成するには通常、いくつかのステップが必要です:add_menu_page()またはadd_submenu_page()メニューアイテムやページを追加した後、Settings APIを使用して設定項目、セクション、フィールドを登録します。Settings APIはCE認証や権限チェックを自動的に処理し、標準化されたフィールドの表示方法を提供するため、安全で標準化されたバックエンド設定ページを構築するための推奨される方法です。