ゼロから始める:初めてのWordPressプラグイン構築

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

開発前の準備作業

コードを書き始める前に、開発環境が正しく構築されていることを確認し、WordPressプラグインの基本構造を理解する必要があります。適切なローカル開発環境は、効率的に作業を進めるための基盤となります。

ローカル開発環境の構築

まず、WordPressを実行するためのローカルサーバー環境が必要です。XAMPP、MAMP、Local by Flywheelなどの統合ツールの使用をお勧めします。WordPressのインストールが完了したら、次に… wp-content/plugins このディレクトリからプラグインの開発を始めてください。このディレクトリには、自分で開発したものでも公式ディレクトリからインストールしたものでも、すべてのプラグインが保存されています。

プラグインのコアファイルを理解する

すべてのWordPressプラグインには、少なくとも1つのメインファイルが必要です。このファイルはプラグインの「身分証明書」であり、「起動器」の役割も果たし、通常はプラグインの機能にちなんで名付けられます。例えば… my-first-plugin.phpこのメインファイルの上部にあるコメントブロックは非常に重要で、WordPressシステムにこのプラグインの基本情報を説明しています。

推薦図書 WordPressプラグイン開発入門から上級者へ:初めてのカスタムプラグインの作成方法を手取り足取り教えます

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

では、最も基本的な部分から始めましょう。実際の機能を持つシンプルなプラグインを作成していきましょう。

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

プラグインのヘッダー部分にコメントを記述する方法:

はい。 wp-content/plugins ディレクトリ内に、「%s」という名前のファイルを作成してください。 my-first-plugin 新しいフォルダを作成してください。その後、そのフォルダ内にメインファイルを作成してください。 my-first-plugin.phpこのファイルの最上部に、WordPressの標準に準拠したプラグイン情報のヘッダーコメントを追加する必要があります。

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

このコードはWordPressに対して「これはプラグインである」と伝え、管理画面で表示される名前、説明、バージョンなどの情報を定義しています。ファイルを保存した後、WordPressの管理画面にログインし、「プラグイン」ページにアクセスすると、自分のプラグインがリストに表示されているはずです。これでプラグインを有効にすることができますが、まだ何の機能もありません。

基本的な機能を実装します:記事の内容をフィルタリングすることです。

プラグインを有効にした後、何らかの処理を行わせる必要があります。よくある初歩的な機能の一つは、記事の内容を変更することです。それを実現するために使用します。 the_content このフィルターホックは、各記事の末尾に自動的にカスタムテキストを追加します。

メインファイル内で my-first-plugin.php ヘッダーのコメントの下に、機能コードを追加します:

推薦図書 プロフェッショナルなWordPressテーマの作成方法:ゼロからオンライン公開までの完全ガイド

// 在文章内容末尾添加自定义文本
function myfp_add_custom_text_to_content( $content ) {
    // 确保只在主循环的单篇文章页面添加
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = '<p><strong>お読みいただきありがとうございます!この記事は「My First Plugin」のサポートによって作成されました。</strong></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 将我们的函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'myfp_add_custom_text_to_content' );

このコードは、``という名前のものを定義しています。 myfp_add_custom_text_to_content その関数は、記事の内容を受け取ります。 $content パラメータとして、条件判断を用いてウェブサイトのフロントエンドにある単一の記事ページにのみテキストを追加するようにします。これにより、リストページなどの他のページでもテキストが表示されるのを防ぎます。その後、カスタムのHTMLパラグラフを元のコンテンツの後に追加し、修正された内容を返します。最後に、 add_filter() このカスタム関数をWordPressのコアに「マウント」するのです。 the_content フィルターの上に設定されています。このようにすることで、WordPressが記事の内容を出力しようとするたびに、まず私たちの関数が実行されます。

ファイルを保存した後、ウェブサイトのフロントエンドで任意の記事を閲覧すると、ページの下部に私たちが追加した謝辞のテキストが表示されていることに気づくでしょう。

プラグインに管理オプションを追加する

機能が充実したプラグインには、通常、ユーザーがバックエンドで設定を行えるような設定オプションが必要です。先ほど紹介した「カスタムテキスト」機能についても、設定ページを追加する予定です。

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

プラグイン管理メニューを作成します。

まず、WordPressの管理画面のサイドバーに新しいメニュー項目を追加する必要があります。これにはWordPressの機能を利用する必要があります。 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() 函数会在“设置”主菜单下创建一个子菜单项。它需要几个参数:页面标题、菜单标题、用户权限、唯一的菜单标识符(slug),以及一个用于输出设置页面 HTML 内容的回调函数名 myfp_options_page_html

設定ページの構築とデータの保存

次に、設定ページをレンダリングするためのコールバック関数を定義し、ユーザーが送信したデータを処理する必要があります。

推薦図書 WordPressプラグイン開発チュートリアル:最初のプラグインをゼロから構築する

// 渲染设置页面的HTML
function myfp_options_page_html() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="“wrap”">
        <h1></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>
    ‘myfp_field_custom_text’ ]
    );
}
add_action( ‘admin_init’, ‘myfp_settings_init’ );

// 渲染文本框的HTML
function myfp_field_custom_text_html() {
    // 从数据库获取已保存的值
    $options = get_option( ‘myfp_options’ );
    $value = $options[‘myfp_field_custom_text’] ?? ‘’; // 使用空合并运算符,如果不存在则赋空值
    ?&gt;
    <input type="“text”"
           id="“myfp_field_custom_text”"
           name="“myfp_options[myfp_field_custom_text]”"
           value="“NO NUMERIC NOISE KEY" 1000”
 class="“regular-text”">
    あなたのアカウントは有効です。あなたはログインしています。

このコードは register_settingadd_settings_sectionadd_settings_field 一連の関数を利用し、WordPressのSettings APIに従って、テキスト入力ボックスを含む設定ページを規則正しく作成しました。ユーザーが入力した内容は安全に保存されます。 wp_options データテーブルの myfp_options 記録されました。

最後に、以前使用していた記事内容のフィルタリング関数を修正する必要があります。その関数では、データベースから取得したテキストを使用するようにし、ハードコードされたテキストではなくなるようにしなければなりません。

インターサーバー共有ホスティング
共有ホスティング月$2.50米ドル, 最初の月$0.1米ドルプロモーションコードtryinterserver, 461クラウドアプリケーションスクリプト, 1クリックインストール.
function myfp_add_custom_text_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $options = get_option( ‘myfp_options’ );
        $custom_text = $options[‘myfp_field_custom_text’] ?? ‘’;
        if ( ! empty( $custom_text ) ) {
            $content .= ‘<p><strong>’ . esc_html( $custom_text ) . ‘</strong></p>’;
        }
    }
    return $content;
}

現在、ユーザーは「設定」→「マイプラグイン設定」のページで任意のテキストを入力することができ、保存するとそのテキストがウェブサイトのすべての記事の末尾に表示されます。

プラグイン開発の高度な実践とリリース準備

基本機能が完成したら、プラグインの堅牢性(信頼性)、保守性(メンテナンスの容易さ)、そして他の人々とどのように共有するかを検討する必要があります。

セキュリティ性と国際化のサポートを追加します。

セキュリティはプラグイン開発において最も重要な要素です。上記の例では、すでにその点に配慮して対応を行っています。 esc_html()esc_attr() XSS(Cross-Site Scripting)攻撃を防ぐために、出力データをエスケープ処理する関数(`escapist()`など)を使用してください。ユーザー入力を処理したり、データベースクエリを実行したり、外部ファイルを読み込んだりする際には、常にWordPressが提供するセキュリティ関数を使用する必要があります。 wpdb->prepare()sanitize_text_field()check_admin_referer() その他

さらに、プラグインを世界中のユーザーが利用できるようにするためには、国際化(i18n)が必要です。プラグイン内のすべてのユーザー向けのテキストをWordPressの翻訳機能を使ってラップする必要があります。これには、以前のコードを修正する必要があります。

1. プラグインのヘッダー部分にあるコメント内で指定されています。 Text Domain: my-first-plugin
2. テキストフィールドを読み込む。通常はメインファイルの下部に以下のようなコードを追加します:add_action( ‘plugins_loaded’, function() { load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( FILE ) ) . ‘/languages/’ ); } );
3. パッケージ文字列。例えば、設定領域のタイトルを変更する場合などです。 ( ‘自定义文本设置’, ‘my-first-plugin’ )メニューのタイトルを以下のように変更してください: ( ‘我的插件设置’, ‘my-first-plugin’ )このようにすることで、翻訳者は以下の方法で作業を進めることができます: .po/.mo このファイルには、これらのテキストに他の言語版が用意されています。

プラグインを公式ディレクトリに公開する準備をします。

もしプラグインをWordPress.orgの公式プラグインディレクトリに提出したい場合は、一連の規格に従う必要があります:
1. コード規格:WordPressのコーディング基準を遵守してください。
2. ファイル構造:メインファイルの他に、通常以下のものも必要になります: README.txt(プラグインの説明:カタログページ用)uninstall.php(プラグインのアンインストール時に行われるクリーンアップ作業など)
3. SVNリポジトリ:公式のディレクトリではSubversion(SVN)を使用してバージョン管理が行われています。あなたは自分のプラグインコードを指定されたSVNリポジトリにコミットする必要があります。
4. メタデータ:README.txt 特定の形式に従って記述する必要があります。内容にはプラグインの名前、説明、インストール方法、よくある質問、更新履歴などが含まれます。

概要

このチュートリアルを通じて、あなたはWordPressプラグインの開発サイクルを完全に経験しました。最初のファイルの作成から始まり、ヘッダー内のコメントの記述、アクションフックやフィルターフックを利用してコア機能を実装し、プラグインに設定可能なページを追加し、最後にはセキュリティや国際化、リリース準備といった高度な知識についても学びました。記事の末尾にカスタムテキストを追加するというシンプルなプラグインでしたが、これにはプラグイン開発における最も基本的な概念とプロセスがすべて含まれています。これらの基礎知識をマスターしたら、WordPressの豊富なフックシステム、ショートコード、カスタム記事タイプ(CPT)、REST APIなどを活用して、より機能的で複雑なプラグインを構築することができるようになります。覚えておいてください——実践こそが最良の学習方法です。コードを変更したり新しい機能を追加したりすることで、知識を定着させることができます。

FAQ よくある質問

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

プラグインのメインファイルの命名には強制的な要件はありませんが、必ず以下の形式で名付ける必要があります: .php 結論として、明確さと一意性を保つために、通常はプラグインのフォルダ名と同じ名前、またはプラグインの機能を表す名前を使用します。例えば… my-awesome-plugin.phpWordPressは、そのファイルのヘッダー部分にある特定のコメントブロックを読み取ることでプラグインを認識します。

私のプラグインがバックエンドのメニューに表示されないのはなぜですか?

これは通常、いくつかの理由によって引き起こされます。まず、プラグインが正常に有効化されているかを確認してください。次に、… add_menu_page() または、類似の関数内で使用されるユーザー権限パラメータ(capability)についても、現在ログインしているユーザーが必要な権限を持っていることを確認してください。 manage_options最後に、自分が書いた関数が正しく動作しているかを確認してください。 add_action(‘admin_menu’, …) マウントします。PHPの文法エラーがあると、プラグイン全体の初期化に失敗する可能性があります。

プラグイン内のPHPエラーをどのようにデバッグするか?

開発段階では、WordPressのデバッグモードを有効にすることをお勧めします。ウェブサイトのルートディレクトリ内にある設定ファイルを開いて、必要な設定を行ってください。 wp-config.php ファイルについては、以下の設定が有効になっていることを確認してください:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true ); // 将错误记录到 /wp-content/debug.log
define( ‘WP_DEBUG_DISPLAY’, false ); // 不建议在页面上显示,以免破坏布局
このようにすると、エラーメッセージがログファイルに記録されるので、問題の特定が容易になります。プラグインを公開する前には、必ずデバッグモードをオフにしてください。

プラグインのオプションデータはどこに保存されていますか?

プラグイン利用 add_option() または update_option() 関数で保存されたデータは、デフォルトでWordPressのデータベースに保存されます。 wp_options 表内(表の前缀は異なる場合があります)。使用してください。 get_option() 関数はこれらのデータを読み取ることができます。より複雑なデータ構造の場合には、カスタムのデータベーステーブルを作成することもありますが、その場合はより慎重な処理が必要になります。

どうやって私のプラグインを多言語対応(国際化)にできるでしょうか?

WordPressの翻訳機能を使用して、ユーザーに表示されるすべてのテキストを翻訳する必要があります。最も一般的に使用される方法は…… __(‘字符串’, ‘text-domain’)_e(‘字符串’, ‘text-domain’)その後、Poeditのようなツールを使用してこれらの文字列を抽出し、生成します。 .pot テンプレートファイルを作成し、対応する言語(例えば…)のバージョンも作成してください。 zh_CN.po.mo)の翻訳ファイルです。最後に、言語ファイルをプラグインディレクトリに配置してください。 /languages/ フォルダ内に保存し、プラグインの初期化時に使用します。 load_plugin_textdomain() 関数がそれらを読み込みます。