WordPressプラグイン開発完全ガイド:入門から実践までの詳細解説

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

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

WordPressは世界で最も人気のあるコンテンツ管理システム(CMS)であり、その強力な拡張性は主にプラグインシステムによるものです。プラグイン開発を学ぶことで、既存のプラグインの機能に縛られることなく、プロジェクトのニーズに応じて独自のソリューションをカスタマイズできるようになります。これにより、顧客にユニークな機能を提供したり、優れたアイデアを製品化してコミュニティと共有したりすることが可能になります。このスキルを習得すると、開発効率と市場での競争力が大幅に向上します。

標準的なWordPressプラグインとは、独立したPHPファイル、または複数のファイルを含むディレクトリのことであり、一連の事前定義されたインターフェースを通じてWordPressのコアと通信します。開発プロセスは主に、WordPressの仕組みを理解することに焦点を当てています。Hooks(フック)システムは、そのコーディング基準およびセキュリティ慣行に従っています。

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

コードの作成を始める前に、ローカル開発環境が必要です。XAMPP、MAMP、またはLocal by Flywheelの使用をお勧めします。環境が準備できたら、コードの編集やテストを行うことができます。wp-content/pluginsディレクトリ内に、あなたの最初のプラグインが作成されました。

推薦図書 ゼロからWordPressプラグイン開発をマスターする:完全ガイドと実践演習

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

すべてのプラグインにはメインのPHPファイルが必要であり、そのファイルの冒頭には標準的なプラグイン情報のコメントを含める必要があります。このファイルはプラグインのエントリーポイントであり、その名前は通常プラグインディレクトリの名前と一致します。例えば、`my-plugin`という名前のプラグインを作成する場合、そのメインPHPファイルの名前も`my-plugin.php`となります。my-first-pluginそのディレクトリを開き、そこに同名のファイルを作成してください。my-first-plugin.phpファイル。

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

ファイルの冒頭にあるコメントは非常に重要であり、WordPressはそれを通じてプラグインの基本情報を認識します。

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习插件开发的简单示例插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

ファイルを保存した後、WordPressの管理画面にログインし、「プラグイン」ページにアクセスすると、新しく追加されたプラグインがプラグイン一覧に表示されます。そこからそのプラグインを有効にすることができます。ただし、現時点ではこのプラグインにはまだ何の機能もありません。

最初の機能を追加します。

では、このプラグインに簡単な機能を追加しましょう。記事の内容の最後に自動的にカスタムテキストを追加する機能です。これにはWordPressの機能を利用する必要があります。the_contentフィルターフック。

プラグインのメインファイル内で、コメント情報の下に以下のコードを追加してください:

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

// 在文章内容后添加自定义文本
function myfp_add_footer_text($content) {
    // 确保只在主循环的单篇文章中显示
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; 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' );;

このコードは、ある関数を定義しています。myfp_add_footer_textそれは記事の内容を受け取ります。$contentパラメータとして。関数内部では条件判断を行い、特定の記事ページでありかつメインクエリのメインループ内でのみ効果を発揮するようにしています。その後、カスタムのHTMLテキストを組み込みます。最後に、それを使用します。add_filter()この関数は、このカスタム関数をWordPressにマウントします。the_contentフィルターの設定が有効になっています。プラグインを有効にした後、任意の記事を閲覧すると、コンテンツの下部に追加されたテキストが表示されます。

核心を掘り下げる:フックとAPI

WordPressプラグイン開発の核心は、そのフック(Hook)システムと豊富なAPIを理解し、熟知して活用することにあります。これらはプラグインがWordPressのコアシステムと安全かつ標準的に通信するための橋渡しとなるものです。

アクションとフィルターホックの仕組みを理解する

フックには主に2つのタイプがあります:アクション(Action)とフィルター(Filter)です。アクションフックを使用すると、特定のタイミングでカスタムコードを「実行」することができます。例えば、wp_footerアクションはページの下部にあるタグの前でトリガーされます。これを利用するには…add_action('wp_footer', 'your_function')ここにトラッキングコードやカスタムHTMLを挿入してください。

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

フィルターフックは、データを「変更」することを可能にします。フィルターフックはデータを受け取り、あなたが定義した関数で処理した後に再びデータを返します。先ほどの例でページフッターテキストを追加した場合が、典型的なフィルターの使用例です。もう一つのよくある例は…excerpt_lengthフィルター:記事の要約の長さを変更するためのものです。

// 修改摘要长度为20个单词
function myfp_custom_excerpt_length($length) {
    return 20;
}
add_filter('excerpt_length', 'myfp_custom_excerpt_length');

WordPressのデータベースAPIを使用する

プラグインではよくデータの保存や読み取りが必要になります。WordPressではそのための機能が用意されています。wpdbクラスを使用してデータベースと安全にやり取りを行います。シンプルなキー値ペアデータの場合は、Options APIの使用を強くお勧めします。

例えば、ユーザーが以前に追加したフッターテキストをカスタマイズできるようにするために、オプションを作成することができます。

推薦図書 WordPressプラグイン開発の完全ガイド:入門からプロフェッショナルレベルの拡張機能の構築まで

// 1. 创建可配置的页脚文本
function myfp_add_footer_text_v2($content) {
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        // 从数据库获取选项值,如果不存在则使用默认值
        $footer_text = get_option('myfp_footer_text', '感谢阅读!本文由“我的第一个插件”提供支持。');
        $custom_text = '<p><em>'`. esc_html($footer_text)`.'</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter('the_content', 'myfp_add_footer_text_v2');

現在、テキスト内容は以下の方法で利用できます:get_option()関数はデータベースからデータを読み取ります。次に、ユーザーがその値を変更できるような管理ページが必要になります。

プラグイン管理ページを作成します。

プラグインをよりプロフェッショナルで使いやすいものにするためには、設定ページを追加することが必要です。これは通常、WordPressの管理メニューのAPIを使用して実現されます。

インターサーバー共有ホスティング
共有ホスティング月$2.50米ドル, 最初の月$0.1米ドルプロモーションコードtryinterserver, 461クラウドアプリケーションスクリプト, 1クリックインストール.

管理メニューとサブページを追加します。

プラグインには独立したトップメニューを追加することもできますし、「設定」や「ツール」の下にサブメニューとして追加することもできます。ここでは「設定」メニューの下に追加します。

まず、を使用してadd_action()関数をマウントするadmin_menuこの関数内にメニューアイテムを追加するための「フック」を使用してください。

// 添加管理菜单
function myfp_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',     // 所需权限
        'my-first-plugin',    // 菜单slug
        'myfp_options_page_html' // 用于渲染页面的回调函数
    );
}
add_action('admin_menu', 'myfp_add_admin_menu');

add_options_page()この関数は、「設定」メニュー内にサブページを作成します。ユーザーがこのメニューをクリックすると、WordPressは私たちが指定したコールバック関数を呼び出します。myfp_options_page_htmlページの内容を出力してください。

構築設定ページのフォームを作成する

次に、シンプルな設定フォームをレンダリングするためのコールバック関数を定義します。このフォームは以下のURLに送信されます:options.phpこれはWordPressが設定を処理する標準的な方法です。

// 渲染设置页面
function myfp_options_page_html() {
    // 检查用户权限
    if (!current_user_can('manage_options')) {
        return;
    }
    ?&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
            // 输出必要的安全字段
            settings_fields('myfp_settings');
            // 输出设置章节和字段
            do_settings_sections('my-first-plugin');
            // 提交按钮
            submit_button('保存设置');
            ?>
        <input type="hidden" name="trp-form-language" value="ja"/></form>
    </div>
    あなたのアカウントは有効です。あなたはログインしています。

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

単にフォームがあるだけでは不十分です。私たちはそれを使用する必要があります。register_setting(), add_settings_section()add_settings_field()などの関数を使って、WordPressにどの設定項目があるかを伝えます。

// 初始化插件设置
function myfp_settings_init() {
    // 注册一个设置项‘myfp_settings’,它包含一个字段‘myfp_footer_text’
    register_setting('myfp_settings', 'myfp_footer_text');

// 在页面‘my-first-plugin’上添加一个设置章节
    add_settings_section(
        'myfp_section',
        '页脚文本设置',
        null, // 章节描述回调函数,这里不需要
        'my-first-plugin'
    );

// 在上述章节中添加一个字段
    add_settings_field(
        'myfp_field_footer_text',
        '自定义页脚文本',
        'myfp_field_footer_text_html', // 渲染字段HTML的回调函数
        'my-first-plugin',
        'myfp_section',
        ['label_for' =&gt; 'myfp_footer_text']
    );
}
add_action('admin_init', 'myfp_settings_init');

// 渲染文本输入字段
function myfp_field_footer_text_html() {
    // 获取数据库中保存的值
    $value = get_option('myfp_footer_text');
    ?&gt;
    <input type="text" id="myfp_footer_text" name="myfp_footer_text" value="<?php echo esc_attr($value); ?>" class="regular-text">
    <p class="description">このテキストは、すべての記事の末尾に表示されます。</p>
    あなたのアカウントは有効です。あなたはログインしています。

現在、WordPressの管理画面を更新すると、「設定」メニューの中に「My Plugin Settings」という項目が表示されます。このページにアクセスすると、カスタムされたフッターテキストを変更・保存することができ、その変更内容はフロントエンドの記事内容にも反映されます。

概要

このガイドでは、WordPressプラグイン開発の核心的な流れをご紹介しました。標準的なヘッダ情報を含む基本的なプラグインファイルの作成から始め、アクションやフィルターハックを利用してWordPressに機能を追加し、オプションAPIを使ってデータを保存し、最終的には完全な管理画面を作成するまでの手順を解説しました。このプロセス全体は、WordPressのモジュール化された設計思想およびフック駆動の開発アプローチを体現しています。これらの基本知識をマスターすれば、カスタム記事タイプの作成、ショートコードの活用、REST APIとの統合、AJAX処理、プラグインの国際化といったより高度な機能にも取り組むことができるでしょう。良質なコード構造、安全なデータ処理、そして使いやすいユーザーインターフェースこそが、優れたプラグインを構築するための鍵です。

FAQ よくある質問

プラグインを開発するには、どのような前提知識が必要ですか?

PHPプログラミング言語の基礎知識が必要です。これには、変数、関数、条件判断、ループなどの概念が含まれます。また、HTMLとCSSにも基本的な理解があると、フロントエンドの出力やスタイリングの処理がスムーズになります。MySQLの基本的な操作にも精通していると、データの保存についての理解が深まりますが、WordPressのAPIはデータベースとのやり取りの大部分を自動的に処理してくれます。

如何调试正在开发的插件

最も効果的な方法は、WordPressのデバッグモードを有効にすることです。wp-config.phpファイルの中で、WP_DEBUG定数の定義方法は以下の通りです:trueこれにより、すべてのPHPエラー、警告、および通知が画面に表示されます。また、それらを利用することもできます。error_log()この関数は、デバッグ情報をサーバーのエラーログに書き込むか、またはブラウザの開発者ツールにあるConsoleおよびNetworkパネルを使用してフロントエンドのデバッグを行います。

プラグインはどのようにして多言語サポートを実現するのでしょうか?

WordPressは、「国際化(i18n)」および「ローカライゼーション(l10n)」のプロセスを利用して多言語をサポートしています。プラグインのコード内では、翻訳が必要なすべてのテキスト文字列には、特定の形式を使用する必要があります。__()または_e()これらの翻訳関数をラップ(カプセル化)し、その後Poeditのようなツールを使用してソースコードからこれらの文字列を抽出し、生成します。.potテンプレートファイルを使用して、異なる言語(例えば…)用のコンテンツを生成します。zh_CN.po)の翻訳ファイルです。最後に、プラグインのメインファイルのヘッダー部分にある「Text Domain」に自分のテキストドメインを宣言し、初期化時にそれを使用してください。load_plugin_textdomain()「Function loading」の翻訳です。

开发好的插件如何发布到官方目录

まず、プラグインがWordPress公式のコーディングスタンダード、プライバシーポリシー、およびGPLの互換性要件を完全に遵守していることを確認してください。次に、WordPress.orgでSVNリポジトリを申請します。プラグインのコード(メインファイル、リソースファイル、翻訳ファイルを含む)をそのSVNリポジトリにコミットしてください。/trunk目次。新しいバージョンはSVNのタグを使用して公開されます。公式の目録は、あなたのSVNリポジトリから自動的にコードを同期し、人の手による審査を経て表示されます。