ワードプレスのプラグイン開発ガイド: ゼロから自分のプラグインを作る方法を一通り説明します

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

プラグインの基礎と開発環境の構築を理解する

コードの執筆を始める前に、WordPressプラグインの基本概念を理解し、適切なローカル開発環境を整えることが非常に重要です。プラグインとは、1つまたは複数のPHPファイルで構成されるディレクトリのことであり、WordPressが提供するフック(Hook)システムを通じてコア機能を拡張したり変更したりします。プラグインはテーマとは異なり、ウェブサイトの外観を変更するのではなく、新たな機能を追加することに特化しています。たとえテーマを変更しても、プラグインの機能は通常そのまま維持されます。

開発を始めるには、まずローカルのWordPress環境が必要です。これはLocal by Flywheel、MAMP、XAMPPのようなツールを使用するか、Dockerコンテナを直接利用することで簡単に構築できます。ローカルにWordPressをインストールした後、次に必要なのは…wp-content/plugins目次。ここにすべてのプラグインが保存されています。新しいフォルダを作成してください。例えば、my-first-pluginこのフォルダ内には、メインのPHPファイルを作成する必要があります。そのファイル名は通常、フォルダ名と同じになります。例えば:my-first-plugin.phpこのメインファイルはプラグインのエントリーポイントであり、WordPressにプラグインの名前、説明、バージョン、作者などの情報を伝えるための特別なコメントヘッダー情報を含んでいます。

開発環境では有効にすることをお勧めします。WP_DEBUG「モード」です。WordPressのルートディレクトリ内にあるファイルを開いてください。wp-config.phpファイル内で、以下の行を見つけたり追加したりしてください:

推薦図書 WordPressプラグイン開発実践ガイド:ゼロから始めて、あなたの最初のプラグインを作成する

define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );

これにより、エラーや警告が記録されます。wp-content/debug.logこのファイルは、開発過程で問題を迅速に特定するのに役立ちます。また、VS CodeやPhpStormのような高性能なコードエディタやIDEを使用すると開発効率が大幅に向上します。これらのツールは通常、PHPやWordPressに対して優れた構文サポートとヒント機能を備えています。

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

最初のプラグインファイルを作成しましょう。

「Hello World」という簡単なプラグインを作成することで、ファイルの作成からプラグインの有効化に至るまでの全ての手順を実際に経験します。このプラグインは、ウェブサイトの管理画面の上部にウェルカムメッセージを表示します。

あなたのプラグインディレクトリ内でmy-first-plugin中で、メインファイルを作成してください。my-first-plugin.phpファイル内容の基本構造は、プラグインのヘッダー部分にあるコメントから始まる必要があります。

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个用于学习插件开发的示例插件,它将在后台显示欢迎信息。
 * Version:           1.0.0
 * Author:            开发者姓名
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

これらのコメントヘッダーは必須であり、WordPressはこれらを利用して「プラグイン」管理ページ内であなたのプラグインを識別し、表示します。Text Domain国際化(i18n)のために使用されます。Domain Path言語ファイルが保存されているディレクトリを指定します(必要に応じて)。

次に、コア機能を追加します。この例では、以下の方法を使用します:admin_noticesフックです。ヘッダーのコメントの下に以下のコードを追加してください:

推薦図書 ワードプレスのプラグイン開発の完全なガイド:初心者から上級者までの実践的なチュートリアル

// 使用 admin_notices 钩子在管理后台输出提示信息
add_action( ‘admin_notices’, ‘my_first_plugin_display_admin_greeting’ );

/**
 * 在管理后台显示欢迎信息的函数
 * @return void
 */
function my_first_plugin_display_admin_greeting() {
    // 检查当前用户是否有权限,确保只在后台显示
    if ( ! current_user_can( ‘manage_options’ ) ) {
        return;
    }
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( ‘欢迎使用我的第一个插件!插件开发之旅正式开始!’, ‘my-first-plugin’ ); ?></p>
    </div>
    あなたのアカウントは有効です。あなたはログインしています。

ファイルを保存した後、WordPressの管理画面にログインし、「プラグイン」ページに移動してください。そこに「My First Plugin」という名前のプラグインがリストに表示されているはずです。その「有効にする」ボタンをクリックしてください。有効になると、管理画面(例えばダッシュボード)を更新すると、緑色の成功メッセージが表示されます。そのメッセージの内容は、私たちのコードで定義したウェルカムメッセージです。これは最小限の構成ですが、完全な機能実装であり、あなたの開発環境とプラグインの構造が正しく設定されていることを確認できます。

WordPressのコア技術:フックとフィルター

WordPressプラグイン開発において、フック(Hooks)を理解し、熟知して活用することは非常に重要です。フックには2種類あります:アクション(Actions)とフィルター(Filters)です。アクションフックを使用すると、特定のタイミングでカスタムコードを挿入して実行することができます。例えば、記事が公開された後やページのヘッダーが読み込まれる前などです。先ほど私たちが使用したのもアクションフックでした。admin_noticesこれは単なるアクションフックです。フィルターフックを使用すると、処理の過程で生成されたり渡されたりするデータを変更することができます。例えば、記事のタイトル内容やプラグインの検索結果を変更するといったことができます。

カスタムアクションを追加するには、以下の手順に従ってください:

アクションが完了しました。add_action()関数の追加方法です。構文は以下の通りです:add_action( ‘hook_name’, ‘your_function_name’, priority, accepted_args )優先度(priority)は整数であり、数字が小さいほど早く実行されます。デフォルト値は10です。例えば、記事の内容の後にカスタムHTMLを追加したい場合などです:

hosting.com 共有ホスティング
AMD EPYC CPU、NVMe SSDストレージ、LiteSpeedによる高いパフォーマンス、24時間365日の専門家による社内サポート、SSL、ブルートフォース、マルウェア、DDoS保護などの高度なセキュリティ対策、最大73%のコスト削減
add_action( ‘the_content’, ‘my_custom_content_append’ );
function my_custom_content_append( $content ) {
    // 只在单篇文章主循环内生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $extra_content = ‘<div class="“my-custom-box”"><p>これはプラグインを通じて追加されたカスタムコンテンツです。</p></div>’;
        $content .= $extra_content;
    }
    return $content;
}

注意:虽然the_contentこれはフィルターです(修正後のデータを返す必要があります)。$content)しかし、WordPressもこれをアクションのトリガーポイントとして使用しています。より厳密な方法としては、add_filter

カスタムフィルターを追加するには、以下の手順に従ってください:

フィルターが通過しました。add_filter()関数の追加についてです。その構文は以下の通りです:add_action()似た例として、記事の抜粋の長さを変更するというケースがよくあります。

add_filter( ‘excerpt_length’, ‘my_custom_excerpt_length’, 999 );
function my_custom_excerpt_length( $length ) {
    // 将默认的55个词改为20个词
    return 20;
}

自分でフック(hook)を作成することで、自分のプラグインを他の開発者やテーマによって拡張できるようにすることができます。do_action()来定义一个动作钩子,使用apply_filters()フィルターフックを定義することです。これは、モジュール化された、拡張可能なプラグインを構築するための鍵となります。

推薦図書 WordPressプラグイン開発の完全ガイド:初心者から上級者までのステップアップ

プラグイン機能の高度化とベストプラクティス

プラグインの機能が徐々に複雑になるにつれて、良質なコードの組織化、セキュリティ、メンテナビリティ、およびパフォーマンスが非常に重要になります。一般的な手法として、オブジェクト指向プログラミング(OOP)を用いてコード構造を整理し、関連する機能やデータをメインクラス内に封じ込める方法があります。

オブジェクト指向プログラミングを採用してコードをカプセル化する

プラグインの状態やメソッドをより効率的に管理するために、メインクラスを作成するとよいでしょう。これにより、関数名の衝突を防ぐことができます。以下は、簡単なOOP(オブジェクト指向プログラミング)の構造例です:

インターサーバー共有ホスティング
共有ホスティング月$2.50米ドル, 最初の月$0.1米ドルプロモーションコードtryinterserver, 461クラウドアプリケーションスクリプト, 1クリックインストール.
<?php
/**
 * Plugin Name:       进阶示例插件
 */
if ( ! class_exists( ‘My_Advanced_Plugin’ ) ) {
    class My_Advanced_Plugin {
        /**
         * 构造方法,用于初始化钩子
         */
        public function __construct() {
            add_action( ‘init’, array( $this, ‘register_custom_post_type’ ) );
            add_action( ‘admin_menu’, array( $this, ‘add_admin_menu_page’ ) );
            add_filter( ‘the_title’, array( $this, ‘filter_post_title_prefix’ ), 10, 2 );
        }

/**
         * 注册一个自定义文章类型
         */
        public function register_custom_post_type() {
            $args = array(
                ‘public’ => true,
                ‘label’  => ‘我的产品’,
                ‘supports’ => array( ‘title’, ‘editor’, ‘thumbnail’ ),
                ‘has_archive’ => true,
            );
            register_post_type( ‘my_product’, $args );
        }

/**
         * 在文章标题前添加前缀的过滤器
         * @param string $title 原标题
         * @param int    $id    文章ID
         * @return string 修改后的标题
         */
        public function filter_post_title_prefix( $title, $id = null ) {
            if ( ! is_admin() && in_the_loop() ) {
                $title = ‘[精品] ’ . $title;
            }
            return $title;
        }

// ... 其他方法
    }
    // 实例化插件类
    new My_Advanced_Plugin();
}

このような構造により、関連する機能が一緒にまとめられるため、コードがより明確になり、管理も容易になります。

プラグインのセキュリティとパフォーマンスを保証する

セキュリティはプラグイン開発において最優先事項です。ユーザーが入力したデータを絶対に信用してはいけません。すべてのユーザー入力データに対しては、厳格なチェックと処理が必要です。$_GET$_POSTまたは$_REQUEST取得したデータには、必ず検証(Validation)、クリーニング(Sanitization)、およびエスケープ処理(Escaping)を行う必要があります。WordPressでは、これらの処理を支援する一連の関数が用意されています。
* 验证:check_ajax_referer()wp_verify_nonce()
* 清理:sanitize_text_field()sanitize_email()absint()
* 转义:esc_html()esc_url()wp_kses_post()

HTML、属性、またはURLにデータを出力する前には、必ず適切なエスケープ関数を使用してください。パフォーマンスを考慮する上で、リソースを多く消費するクエリを毎回ページが読み込まれるたびに実行するのは避け、賢明にフック(hook)を利用しましょう。非重要で再利用可能なクエリ結果は、一定時間WordPressの一時的なキャッシュ(Transients API)に保存することを検討してください。

プラグインの設定ページを実装する

ほとんどのプラグインには、ユーザーが設定を行うための設定ページが必要です。これは通常、以下の方法で実現されます:add_options_page()またはadd_menu_page()などの関数を、マウントしてください。admin_menuフックを使用して実装します。オプションの設定には、WordPressのSettings APIを使用して安全に登録、保存、検証を行う必要があります。これには、以下の処理が含まれます:register_setting()add_settings_section()add_settings_field()このような関数を使用することで、セキュリティ(例えばノンス(nonce)の検証)を確保するだけでなく、WordPressのバックエンドインターフェースのスタイルも統一することができます。

概要

WordPressプラグインの開発とは、アイデアを実際の機能に変えていくプロセスであり、まずはプラグインの基本構造とローカル環境の構築から始まります。最もシンプルな「Hello World」プラグインを作成することで、ファイルの作成から機能の実装に至るまでの全ての流れを実践しました。開発の鍵となるのは、WordPressが提供する強力なフックシステム(アクションとフィルター)を深く理解し、柔軟に活用することです。これらのフックシステムは、WordPressのコア部分や他のモジュールとのやり取りを可能にするための仕組みです。プラグインの機能が増えていくにつれて、オブジェクト指向プログラミングの採用、セキュリティに配慮したコーディング規則(検証、クリーニング、エスケープ処理の実施)、Settings APIを使った設定ページの作成などが、プラグインの安定性、安全性、保守性、拡張性を確保するための重要なステップとなります。これらのガイドラインとベストプラクティスに従えば、シンプルなツールから高度なアプリケーションまで、高品質なWordPressプラグインを自信を持って開発することができるでしょう。

FAQ よくある質問

###: WordPressプラグインを開発するには、どのような前提知識が必要ですか?
PHPプログラミング言語の基本知識が必要です。なぜなら、このプラグインは主にPHPで作成されているからです。また、HTML、CSS、JavaScriptについても基本的な理解があると、フロントエンドのインタラクションを備えたプラグインを作成するのに役立ちます。最も重要なのは、WordPressの基本概念に精通していることです。具体的には、記事、ページ、カテゴリ、ユーザーロール、そして特に「フックシステム」についてです。

開発中のWordPressプラグインをどのようにデバッグするか?

開発環境では有効にすることを強くお勧めします。WP_DEBUGモードや関連する設定については、本文中の「環境構築」のセクションで説明されています。これにより、PHPのエラー、警告、および通知がログファイルに記録されます。さらに、以下の方法を使用することもできます:error_log()関数やヘルパーファンクションなどvar_dump()協力;連携wp_die()変数の値を出力して確認するために使用します。ブラウザの開発者ツールにあるコンソール(Console)タブやネットワーク(Network)タブは、JavaScriptやAJAXリクエストのデバッグにも欠かせません。

私のプラグインは、どのようにして異なるWordPressバージョンと互換性を持たせることができるのでしょうか?

プラグインのコード内では、使用する関数やクラスが現在のWordPressバージョンで利用可能かどうかを確認する必要があります。そのためには、以下の方法を使用できます:function_exists()またはis_admin()条件判断などについては、プラグインの説明書やプラグインヘッダー内のコメントを通じて確認することができます。Requires at least:このフィールドを使用して、必要なWordPressの最低バージョンを指定してください。プラグインが最新バージョンのWordPressコアと互換性を持っているかを定期的にテストすることは、良い習慣です。

私のプラグインを国際化し、複数の言語に対応させるにはどうすればよいですか?

あなたはWordPressの翻訳機能を使用して、翻訳が必要なすべてのテキスト文字列をラップする必要があります。例えば、以下のように使用します:__( ‘文本’, ‘your-plugin-text-domain’ )_e( ‘文本’, ‘your-plugin-text-domain’ )直接反映(その内容)するには、プラグインのヘッダー部分にあるコメント内で正しく設定を行う必要があります。Text DomainDomain Pathその後、Poeditのようなツールを使用して作成します。.pot翻訳者がこれを基に作成できるテンプレートファイル.po.mo言語ファイル。

開発が完了した後、プラグインを公式のプラグインディレクトリにどのように提出するか?

まず、WordPressの公式ウェブサイトでアカウントを登録し、プラグインを提出して審査を受ける必要があります。ご作成されたコードは、公式のコーディング基準やガイドラインに準拠していなければなりません。これには、セキュリティ性、悪意のあるコードのないこと、GPLライセンスとの互換性などが含まれます。プラグインのディレクトリ構造には、メインのPHPファイルと…readme.txtファイル(特定の形式に準拠しているもの)、およびオプションとしてスクリーンショットやアイコンも必要です。レビューには少し時間がかかる場合がありますが、チームがあなたのコードを確認し、要件を満たしていることを確認します。