WordPressプラグイン開発入門から上級者へ:カスタム機能の作成方法を丁寧に解説

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

WordPressプラグイン開発環境の準備

最初のコード行を書き始める前に、適切な開発環境を整えることは、効率的に作業を進めるための基盤となります。これにより、プラグインがさまざまなWordPress環境で安定して動作することを保証するだけでなく、デバッグやテストの効率も大幅に向上します。

ローカル開発環境の構築

オンラインサーバー上で直接操作するのではなく、ローカルで開発することを強くお勧めします。XAMPP、MAMP、Local by Flywheel、Dockerなどのツールを使用して、PHP、MySQL、Apache/Nginxを備えたローカルサーバー環境を迅速に構築できます。使用するPHPのバージョンが対象のWordPressと互換性があることを確認してください。通常、WordPressの公式サイトでは推奨されるPHPのバージョン範囲が示されています。

コードエディターとツールの選択

機能豊富なコードエディタを選ぶことは非常に重要です。例えば、VS Code、PhpStorm、Sublime Textなどがあります。これらのエディタには、構文のハイライト表示、コードの補完機能、バージョン管理システムとの連携などの機能が備わっています。さらに、WordPressに関連するコードスニペットやプラグインをインストールすることで、作業の効率を大幅に向上させることができます。add_actionadd_filterよく使われる関数の作成方法です。

推薦図書 ゼロからWordPressプラグイン開発をマスターする:カスタム機能の構築とベストプラクティス

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

すべてのWordPressプラグインには、メインのPHPファイルが必要であり、そのファイルの冒頭には標準的なプラグイン情報のコメントを含める必要があります。このファイルがプラグインのエントリーポイントとなります。例えば、「My Custom Greeting」という名前のプラグインを作成する予定であれば、メインファイルの名前は以下のようになります:my-custom-greeting.php

UltaHostのWordPressホスティングサービス
30日間の返金保証、無制限の帯域幅とデータベースサービス、無料のDDoS防御機能が付きます。3年契約をすると、501TPから4Tまでのプランで割引が適用されます。
<?php
/**
 * Plugin Name: My Custom Greeting
 * Plugin URI:  https://yourwebsite.com/my-custom-greeting
 * Description: 一个简单的插件,用于在网站前台显示自定义问候语。
 * Version:     1.0.0
 * Author:      Your Name
 * License:     GPL v2 or later
 * Text Domain: my-custom-greeting
 */

このコメントは必須であり、WordPressはこれを通じてプラグインを認識し、バックエンド管理インターフェースに表示します。

プラグインの基本構造とセキュリティ規格

構造が明確でセキュリティ基準に準拠したプラグインは、長期的なメンテナンスやユーザーからの信頼を得るための基盤となります。WordPress公式のコーディング基準やセキュリティ慣行に従うことで、よく見られる脆弱性を効果的に防ぐことができます。

コードを整理するためにクラスを使用する

純粋関数型プログラミングを使用することもできますが、プラグインの機能をカプセル化するためにオブジェクト指向プログラミング(OOP)のクラスを使用する方が、より現代的で推奨される方法です。これにより関数名の衝突を避け、コードの構造をより明確にすることができます。メインクラスを作成しましょう。My_Custom_Greeting

if ( ! class_exists( 'My_Custom_Greeting' ) ) {
    class My_Custom_Greeting {
        public function __construct() {
            // 构造函数,在这里挂载钩子
        }
    }
    // 初始化插件
    new My_Custom_Greeting();
}

! class_exists()このチェックは、クラスが重複して定義されるのを防ぐためのものです。

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

セキュリティと権限のチェックを実現する

フロントエンドまたはバックエンドでユーザーのリクエストを処理するすべての関数について、権限チェックおよびセキュリティチェックを実施する必要があります。WordPressではこれをサポートしています。wp_verify_nonce()current_user_can()などの関数を使用して実現する必要があります。これは、どのプラグインの設定ページやフォーム処理ロジックにおいても必須の要件です。

プラグインのディレクトリとファイルの構成

合理的なディレクトリ構造は管理を容易にします。典型的なプラグインディレクトリには、以下のようなファイルやディレクトリが含まれることがあります:
メインファイル my-custom-greeting.php (プラグインのルートディレクトリ内にあります)
- includes/ 目次:コア機能を実現するクラスのファイルが格納されています。
- admin/ 目次:バックエンド関連のコードを保存する場所
- public/ 目次:フロントエンド関連のコードを保存する場所
- assets/ 目次:CSS、JavaScript、画像ファイルを保存するための場所
- languages/ 目次:国際化翻訳ファイル(.po/.mo)を保存する場所

核心機能:フックとフィルターの実践的な使い方

WordPressのプラグインメカニズムの核心は「フック(Hook)」であり、アクション(Action)とフィルター(Filter)が含まれます。フックを理解し、熟知して使いこなすことがプラグイン開発の鍵となります。

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

アクションフックを使用して機能を追加する

アクションフックを使用すると、特定のタイミング(例えば初期化時、ページの読み込み時、記事の投稿時など)にカスタムコードを実行することができます。add_action()関数を使用してマウントします。例えば、wp_footerフックの部分に私たちの挨拶文を追加してください。

はい。My_Custom_Greetingクラスのコンストラクタ内でのメソッドのマウント:

public function __construct() {
    add_action( 'wp_footer', array( $this, 'display_greeting' ) );
}

その後、対応するコールバックメソッドを定義します。display_greeting

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

public function display_greeting() {
    $name = get_option( 'my_greeting_name', '访客' );
    echo '<p id="custom-greeting">こんにちは、' . esc_html($name) . '!当サイトにようこそ。</p>';
}

フィルターフックを使用してコンテンツを変更する

フィルターフックを使用すると、WordPressや他のプラグインが生成するデータを変更することができます。私たちはこれを活用しています。add_filter()関数です。例えば、記事のタイトルに付くデフォルトの拡張子を変更するような処理です。

add_filter( 'the_title', array( $this, 'modify_post_title' ), 10, 2 );

public function modify_post_title( $title, $id ) {
    if ( ! is_admin() && in_the_loop() ) {
        $title .= ' [推荐阅读]';
    }
    return $title;
}

ここのパラメータ10それは優先順位のことです。2このコールバック関数は2つのパラメータを受け取ることを示しています。$title$id)。

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

カスタムフックを作成する

成熟なプラグインは、他の開発者が拡張できるように、独自のフック(hook)も提供すべきです。do_action()アクションフックを作成し、使用します。apply_filters()フィルターハンガーを作成します。

// 在插件某处执行一个自定义动作
do_action( 'my_custom_greeting_before_display', $name );

// 提供一个可过滤的问候语文本
$greeting_text = apply_filters( 'my_custom_greeting_text', '你好,' . $name . '!', $name );

プラグイン用の管理インターフェースを作成する

ほとんどのプラグインには、ユーザーがプラグインの動作を設定できるバックエンド設定ページが必要です。WordPressには、メニューページやオプションページを作成するための豊富なAPIが用意されています。

管理メニューを追加します。

利用するadd_action( ‘admin_menu’, … )フックを使用してメニューアイテムを追加します。プラグインに「設定」内にあるサブメニューページを追加します。

add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );

public function add_admin_menu() {
    add_options_page(
        '自定义问候语设置', // 页面标题
        '问候语设置',       // 菜单标题
        'manage_options',   // 所需权限
        'my-custom-greeting', // 菜单slug
        array( $this, 'render_settings_page' ) // 回调函数,用于输出页面内容
    );
}

設定ページとフォームの作成

コールバック関数の中でrender_settings_pageでは、フォームを出力し、WordPressの設定APIを使用してデータを安全に保存する必要があります。まず、設定を登録してください。

add_action( 'admin_init', array( $this, 'register_settings' ) );

public function register_settings() {
    register_setting(
        'my_custom_greeting_options_group', // 选项组名
        'my_greeting_name',                 // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );
}

その後、ページレンダリング関数内でフォームを出力します。

パブリック関数 render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h2>カスタムの挨拶文設定</h2>
        <form method="post" action="/ja/options.php/" data-trp-original-action="options.php">
            <?php settings_fields( 'my_custom_greeting_options_group' ); ?>
            <table class="form-table">
                <tr>
                    <th scope="row"><label for="greeting_name">挨拶対象の名前</label></th>
                    <td>
                        <input type="text" id="greeting_name" name="my_greeting_name" value="<?php echo esc_attr( get_option( 'my_greeting_name', '访客' ) ); ?>" class="regular-text" />
                        <p class="description">ここに入力した名前は、フロントエンドの挨拶文に表示されます。</p>
                    </td>
                </tr>
            </table>
            <?php submit_button(); ?>
        <input type="hidden" name="trp-form-language" value="ja"/></form>
    </div>
    あなたのアカウントは有効です。あなたはログインしています。

スクリプトとスタイルシートを追加します。

管理インターフェースをより美しくしたり、インタラクティブにしたりするためには、設定ページにCSSやJavaScriptを追加する必要があります。admin_enqueue_scriptsフックを使用し、ページのスラグを確認して、それが私たちのプラグインが読み込まれるページでのみ表示されるようにします。

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_assets' ) );

public function enqueue_admin_assets( $hook ) {
    if ( 'settings_page_my-custom-greeting' !== $hook ) {
        return;
    }
    wp_enqueue_style( 'my-custom-greeting-admin', plugin_dir_url( __FILE__ ) . 'assets/css/admin-style.css' );
    wp_enqueue_script( 'my-custom-greeting-admin', plugin_dir_url( __FILE__ ) . 'assets/js/admin-script.js', array( 'jquery' ), '1.0.0', true );
}

概要

この記事の手順に従って、WordPressプラグインの開発プロセスを完全に完了しました。環境の構築、基本的なセキュリティ構造の作成、アクションやフィルターハックを利用したコア機能の実装、そしてユーザーフレンドリーな管理インターフェースの作成までを行いました。プラグイン開発の鍵は、WordPressのハックシステムを深く理解し、そのセキュリティ基準やコーディング規格に従うことにあります。この小さなプラグインを出発点として、さらに多くのクラスを導入したり、より複雑なデータベース操作を行ったり、REST APIを統合したり、カスタムブロック(Gutenberg Block)を作成したりすることで、その機能を継続的に拡張することができます。そうすることで、機能が豊富でメンテナンスが容易なプロフェッショナルレベルのプラグインを構築することができるのです。

FAQ よくある質問

###: WordPressプラグインのデバッグ方法は?
WordPressのデバッグモードを有効にすることが、最も効果的な方法です。wp-config.phpファイルの中で、WP_DEBUG定数は次のように設定されています。trueこれにより、PHPのエラー、警告、および通知がページ上に直接表示されます。より複雑なデバッグには、別のツールや方法を使用することができます。error_log()この関数は、情報をサーバーのエラーログに記録するか、またはXdebugのような専門的なPHPデバッグツールを使用します。

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

開発時には、あまりにも新しい、または古くてすでに廃止されたPHP関数の使用を避けるべきです。PHPの公式マニュアルを参照し、各関数がサポートしている最低バージョンを確認してください。プラグインのメインファイルやドキュメント内で、これらの情報を明記することで、他の開発者が適切なバージョンのPHPを使用できるようになります。Requires PHP:ヘッダータグを使用して、プラグインに必要な最低PHPバージョンを指定します。これにより、WordPressは条件を満たしていない場合に警告を表示します。

私のプラグインを多言語対応にするにはどうすればよいですか?

WordPressはGNU gettextフレームワークを使用して国際化(i18n)を実現しています。まず、翻訳が必要なすべての文字列に対して、__()_e()または_x()関連する関数をラップ(包装)し、その後Poeditのようなツールを使用してコードをスキャンして生成します。.potテンプレートファイルについては、各言語に対応するものを別途作成する必要があります。.po.moファイルです。最後に、プラグインが読み込まれる際に使用します。load_plugin_textdomain()「Function loading」の翻訳です。

WordPressの公式ディレクトリにプラグインを提出する際には、以下の点に注意する必要があります:

送信する前に、コードがWordPressのコーディングスタンダードおよびドキュメント規格に厳密に準拠していることを確認してください。プラグインはGPLv2またはそれ以上の互換性を持つライセンスを使用していなければなりません。詳細な情報の提供が必要です。readme.txtこのファイルには、製品の説明、インストール手順、スクリーンショット、よくある質問などが含まれています。ご提供いただくコードは安全であり、悪意のある行為を含んではいけません。また、コア機能をショートコード(Shortcode)に依存させてはならず、すぐに使用できる状態である必要があります。提出後、審査チームによる厳格なチェックが行われます。