WordPressプラグイン開発入門ガイド:ゼロから始めて、あなたの最初の機能拡張を構築する

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

準備作業と環境設定

コードの作成を始める前に、適切な開発環境が必要です。これには、ローカルにインストールされたWordPressとコードエディタが含まれます。XAMPP、MAMP、Local by Flywheel、Laragonなどのツールを使用することをお勧めします。これらのツールを使えば、迅速にローカルサーバー環境を構築できます。環境には、最新バージョンのPHP(7.4以上)およびMySQL/MariaDBがインストールされていることを確認してください。

次に、WordPressプラグインの基本構造について理解する必要があります。プラグインの中で最も重要なファイルはメインのPHPファイルであり、そのファイル名やディレクトリ名は自由に設定できますが、WordPressにプラグインであることを宣言するための特定のヘッダーコメントを含める必要があります。このヘッダーコメントは、WordPressのインストールディレクトリ内にあります。 wp-content/plugins フォルダ内に新しいフォルダを作成します。例えば: my-first-plugin

このフォルダ内に、メインプラグインファイルを作成してください。例えば、ファイル名を「main_plugin.py」とします。 my-first-plugin.phpこのファイルの冒頭には、標準的なプラグイン情報に関するコメントを含める必要があります。

推薦図書 WordPressプラグイン開発入門ガイド:ゼロから最初のカスタム機能拡張を構築する

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

では、実際にプラグインの基本骨格を作成しましょう。プラグインのディレクトリ内で、メインのPHPファイルを開き、以下の標準的なプラグインヘッダー情報を記述してください。

UltaHostのWordPressホスティングサービス
30日間の返金保証、無制限の帯域幅とデータベースサービス、無料のDDoS防御機能が付きます。3年契約をすると、501TPから4Tまでのプランで割引が適用されます。
<?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がプラグインを認識するための鍵となるものです。その中で、Plugin Name これは必須項目で、その他はすべてオプションです。ファイルを保存すると、WordPressの管理画面の「プラグイン」ページでこの新しいプラグインを確認でき、有効にすることができます。現時点では、このプラグインにはまだ何の機能もありません。

プラグインに簡単な機能を追加しましょう。

最もシンプルな機能の一つは、ウェブサイトの管理バックエンドにカスタムの管理メニューを追加することです。そのために、私たちは以下の方法を使用します: add_action 関数は にマウントされます。 admin_menu このアクションフックに掛かっています。

メインプラグインファイル内のコメントブロックの後に、以下のコードを追加してください:

// 在管理菜单中添加一个顶级菜单
function mfp_add_admin_menu() {
    add_menu_page(
        '我的第一个插件设置', // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',     // 权限要求
        'my-first-plugin',    // 菜单 slug
        'mfp_settings_page',  // 回调函数,用于输出页面内容
        'dashicons-admin-generic', // 图标(可选)
        6                     // 菜单位置(可选)
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 定义设置页面的回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <p>私の最初のプラグインの設定ページにようこそ!</p>
        <form method="post" action="/ja/options.php/" data-trp-original-action="options.php">
            <?php
            // 后续可以在这里添加设置字段
            ?>
            <p class="submit">
                <input type="submit" name="submit" id="submit" class="button button-primary" value="変更内容を保存します。">
            </p>
        <input type="hidden" name="trp-form-language" value="ja"/></form>
    </div>
    あなたのアカウントは有効です。あなたはログインしています。

このコードは新しいトップレベルのメニュー「私のプラグイン」を作成しており、そこをクリックすると簡単な設定ページに移動します。ここでは以下のような処理が行われています: add_menu_page 関数を使用してメニューを登録し、コールバック関数も定義しました。 mfp_settings_page ページのコンテンツをレンダリングするために。

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

フックとフィルターを使用して機能を拡張する

WordPressの強力な核心機能は、そのプラグインアーキテクチャにあります。これは主にアクションフックとフィルターフックによって実現されています。アクションフックを使用すると、特定のタイミングでカスタムコードを実行することができ、フィルターフックを使用するとデータを変更することができます。

アクションフックを利用してページの脚注を追加する

仮に、ウェブサイトのすべての記事の末尾に自動的にカスタムテキストを追加したいとします。これは、以下のような方法で実現できます: the_content このフィルターホックによって実現されます。注意してください:名前は「フィルター」ですが、 the_content 通常は、記事の内容の出力を変更するために使用されます。

// 在文章内容末尾添加自定义文本
function mfp_append_text_to_content($content) {
    // 确保只在主循环的单篇文章页面添加
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        $custom_text = '<p><em>この記事は、「私の最初のプラグイン」からお届けします。</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter('the_content', 'mfp_append_text_to_content');

この関数 mfp_append_text_to_content 元の記事内容を受け取ります。 $contentコンテキスト条件(個別の記事ページであること)を確認した後、カスタムテキストをコンテンツの末尾に追加し、最終的に修正されたコンテンツを返します。 add_filter それを登録してください。 the_content フック。

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

設定可能なプラグインオプションを作成する

実用的なプラグインには、ユーザーが設定できるオプションがいくつか必要になります。WordPress では、オプションを安全に処理し管理するための設定 API が提供されています。これまでの設定ページに、シンプルなテキストフィールドを追加することにしましょう。

まず、設定を登録し、既存のメニューページに追加する必要があります。

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个新的设置到 “reading” 组(或自定义组)
    register_setting('mfp_plugin_settings', 'mfp_custom_message');

// 在现有页面内添加一个设置区域
    add_settings_section(
        'mfp_section_id',
        '自定义消息设置',
        'mfp_section_callback',
        'my-first-plugin'
    );

// 向该区域添加一个字段
    add_settings_field(
        'mfp_field_id',
        '页脚消息',
        'mfp_field_callback',
        'my-first-plugin',
        'mfp_section_id'
    );
}
add_action('admin_init', 'mfp_settings_init');

// 区域描述回调函数
function mfp_section_callback() {
    echo '<p>ここで、記事の末尾に表示されるプラグインのメッセージを設定します。</p>';
}

// 字段输出回调函数
function mfp_field_callback() {
    // 从数据库中获取已保存的选项值
    $message = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
    echo '<input type="text" name="mfp_custom_message" value="' . esc_attr($message) . '" class="regular-text">';
    echo '<p class="description">各記事の末尾に表示したいメッセージを入力してください。</p>';
}

その後、以前に定義したものを修正する必要があります。 mfp_settings_page 関数を使用して、フォーム内に設定されたフィールドの内容を出力します。

推薦図書 WordPressプラグイン開発の完全ガイドと実践トレーニング:初歩者から上級者まで

// 更新后的设置页面回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form method="post" action="/ja/options.php/" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、安全随机数和设置组
            settings_fields('mfp_plugin_settings');
            do_settings_sections('my-first-plugin');
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ja"/></form>
    </div>
    あなたのアカウントは有効です。あなたはログインしています。

最後に、以前に追加されたテキストを更新する関数を更新し、設定可能なオプションを使用できるようにします。

function mfp_append_text_to_content($content) {
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        // 从选项中获取自定义消息,如果不存在则使用默认值
        $custom_text = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
        if (!empty($custom_text)) {
            $content .= '<p><em>'`. wp_kses_post($custom_text)`.'</em></p>';
        }
    }
    return $content;
}

プラグインの国際化と公開準備

プラグインを世界中のユーザーが利用できるようにするためには、国際化(インターナショナライゼーション)が重要なステップです。これには、ユーザーに表示されるすべての文字列をテキストディレクトリや翻訳関数を使用して処理することが含まれます。

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

テキストを翻訳するために翻訳関数を使用します。

プラグイン内で出力されるすべての文字列を… echo または(`return`されたテキスト)を特定の翻訳関数で囲む必要があります。最も一般的に使用されるのは… () これは文字列を翻訳して返すためのものです。 esc_html__() HTMLの翻訳およびエスケープ処理に使用されます。

以前のコード例を修正してください:

// 在管理菜单中添加一个顶级菜单(国际化版本)
function mfp_add_admin_menu() {
    add_menu_page(
        __('我的第一个插件设置', 'my-first-plugin'), // 页面标题
        __('我的插件', 'my-first-plugin'),           // 菜单标题
        'manage_options',
        'my-first-plugin',
        'mfp_settings_page',
        'dashicons-admin-generic',
        6
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 区域描述回调函数(国际化版本)
function mfp_section_callback() {
    echo '<p>' . esc_html__('在这里配置插件在文章末尾显示的消息。', 'my-first-plugin') . '</p>';
}

同時に、テキストフィールドも読み込む必要があります。プラグインのメインファイル内のコメントブロックの後に、翻訳ファイルを読み込むためのコードを追加してください:

// 加载插件文本域
function mfp_load_textdomain() {
    load_plugin_textdomain('my-first-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'mfp_load_textdomain');

プラグインの圧縮パッケージを準備します。

プラグインを公開または共有する前に、クリーンなパッケージを作成する必要があります。プラグインのディレクトリに必要なすべてのファイルが含まれていることを確認し、不要なファイルは除外してください。 .git フォルダーやログファイル、IDEの設定ファイルなど、関係のない内容は含まないでください。通常、最小限のプラグインパッケージには以下のものが含まれるべきです:
1. 主插件 PHP 文件。
2. 一个可选的 readme.txt このファイルはWordPress.orgのフォーマット規格に従っており、プラグインディレクトリ内で表示するためのものです。
3. 一个包含翻译文件的 /languages フォルダ(もしあれば)。
4. 其他必需的 JavaScript、CSS 或图片资源文件夹。

プラグインフォルダー全体をZIPファイルに圧縮します。このZIPファイルをWordPressの管理画面にある「プラグインをアップロード」機能を使ってインストールするか、WordPressの公式プラグインディレクトリにアップロードすることができます。

概要

このガイドを通じて、WordPressプラグイン開発の核心的なプロセスをすべて学びました。環境の準備から、標準的なプラグインヘッダーを含むメインファイルの作成、アクションやフィルターフックを利用した機能の追加、設定APIを使った設定可能なオプションページの作成、そして国際化の基礎知識に至るまでです。これにより、より複雑で実用的なプラグインを構築するための堅固な基盤が築かれました。良いコード構造を心がけ、WordPressのコーディングスタンダードに従い、そのフックシステムを深く理解することが、優れたプラグイン開発者になるための鍵です。

FAQ よくある質問

WordPressプラグインを開発するには、どのようなプログラミングの基礎が必要ですか?

WordPressのコア部分やプラグインは主にPHPで書かれているため、PHPプログラミングの基礎知識が必要です。また、HTML、CSS、JavaScriptについても基本的な理解があると非常に役立ちます。特に、管理画面やフロントエンドのインタラクションをカスタマイズする際にはそうです。WordPressの基本概念(記事、ページ、カテゴリ、フックなど)を理解することも不可欠です。

プラグインのメインファイルは、どのような名前でなければなりませんか?

強制的な要件はありません。メインファイルは任意の有効なPHPファイル名で構いませんが、通常はプラグインのディレクトリ名と同じ名前を使用することをお勧めします。例えば、ディレクトリの名前が「my-plugin“」であれば、メインファイルの名前も「my-plugin.php“」とするのが適切です。 my-super-pluginしたがって、メインファイルの名前は「main_file.txt」とすることができます。 my-super-plugin.php重要なのはファイルの冒頭にあるプラグインヘッダのコメントです。WordPressはそのコメントの中に記載された情報を利用しています。 Plugin Name: プラグインを識別するために。

私のプラグインコードのデバッグ方法は何ですか?

プラグインをデバッグする方法はいくつもあります。まず、自分の環境でプラグインが正しく動作しているかを確認してください。 wp-config.php ファイル内でWordPressのデバッグモードを有効にします。 WP_DEBUG 定数は次のように設定されています。 trueこれにより、PHPのエラー、警告、および通知がページ上に表示されます。さらに、以下のように使用することもできます: error_log() この関数は、デバッグ情報をサーバーのエラーログに書き込みます。また、Query Monitorプラグインのようなより高度なデバッグツールを使用することもできます。Query Monitorプラグインでは、データベースクエリ、フック、PHPエラーなどの詳細な情報を提供してくれます。

私が開発したプラグインをWordPressの公式ディレクトリにどのように公開するか教えてください。

WordPress.orgの公式プラグインディレクトリにプラグインを公開するには、まずWordPress.orgでアカウントを登録し、その後プラグインを提出して審査を受ける必要があります。プラグインのコードはGNU GPLライセンスに従っていなければならず、また正しい形式で記述されている必要があります。 readme.txt ファイルです。レビューチームはコードの品質、セキュリティ、およびディレクトリガイドラインの遵守状況をチェックします。レビューを通過すると、プラグインのバージョンを管理し更新するためのSVNリポジトリを入手できます。