WordPressプラグイン開発の究極ガイド:ゼロから最初のカスタムプラグインを作成する

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

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

WordPressは世界で最も人気のあるコンテンツ管理システム(CMS)であり、その強力な拡張性は主にプラグインアーキテクチャによるものです。プラグインを利用することで、開発者はシンプルな連絡先フォームから高度な電子商取引システムまで、コアプラットフォームにあらゆる機能を追加することができます。カスタムプラグインの開発を学ぶことで、既存のプラグインライブラリに縛られることなく、プロジェクトのニーズに応じて機能を正確に構築し、ウェブサイトのパフォーマンスを最適化することができるようになります。さらに、それを持続可能なビジネスに変えることも可能です。

カスタムプラグインを開発する主な利点は、その柔軟性とコントロール性にあります。コードには必要な機能のみを含めることができるため、肥大化を防ぎ、ウェブサイトの速度を向上させることができます。また、特定のビジネスロジックを深く統合することができ、データの安全性を確保し、最適なコーディング基準に従うことができます。商業的な観点から見ると、成功したプラグインは公式のディレクトリに公開され、何百万人ものWordPressユーザーに届き、かなりの収益を生み出すことができます。

準備作業と環境設定

最初のコード行を書く前に、開発環境が整っていることを確認する必要があります。安定したローカル開発環境は効率を大幅に向上させるだけでなく、オンラインサイトに影響を与えることなく、安全な環境でコードをテストすることができます。

推薦図書 WordPressプラグイン開発を完全にマスターする:ゼロからカスタム機能の構築まで

ローカル開発サーバーを構築する

MAMP、XAMPP、Local by Flywheelなどのツールを使用することをお勧めします。これらのツールを使えば、PHPとMySQLを備えたローカルサーバーを簡単に構築できます。WordPressをインストールし、設定を完了すると、完璧なシャボット環境が整います。PHPのバージョンを主流のホスティング環境と一致させるようにし、エラーデバッグ機能も有効にしてください。WordPressの設定に関しては、公式のドキュメントやチュートリアルを参照してください。wp-config.phpファイル内で設定を行うことができます。WP_DEBUGためにtrueこれにより、開発プロセス中に問題を迅速に特定することができます。

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

基本的なディレクトリ構造を理解する

WordPressのプラグインは、以下の場所にあります:/wp-content/plugins/ディレクトリ内には、各プラグインが独立したフォルダとして存在しており、その中心にはメインのPHPファイルがあります。FTP、SSH、またはローカルのファイルマネージャを使用して、このディレクトリ内に新しいフォルダを直接作成することができます。例えば、最初のプラグイン用に「my_first_plugin“という名前のフォルダを作成するには…my-first-pluginそのフォルダーを開き、その中にメインファイルを作成してください。my-first-plugin.phpこれはプラグインのエントリーポイントです。WordPressはこのファイルのヘッダー部分にある特定のコメント情報を読み取ることで、そのプラグインを認識します。

最初のプラグインの基本ファイルを作成します。

このセクションでは、プラグインの基本フレームワークを段階的に作成する方法を説明します。これは、プラグインがWordPressによって認識され、管理されるための基盤となります。

プラグインのヘッダー情報を作成する

すべてのWordPressプラグインは、メインのPHPファイルの冒頭に標準化されたヘッダーコメントを含める必要があります。これらの情報は、管理画面の「プラグイン」セクションに表示されます。新しいファイルを作成し、その名前を「myplugin.php」とします。my-first-plugin.phpそして、以下のコードを入力してください:

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

このコメントは必要です。Plugin Nameプラグインがバックグラウンドで表示される名称が定義されています。Text Domain国際化翻訳用です。ファイルを保存した後、それをあなたが指定した場所に置いてください。/wp-content/plugins/my-first-plugin/作成したフォルダ内に新しいプラグインがあります。この時点で、WordPressの管理画面(バックエンド)の「プラグイン」ページにログインすると、この新しいプラグインが「未有効」の状態で表示されているはずです。

推薦図書 WordPressプラグイン開発の解析:ゼロからカスタム機能モジュールを構築するための完全ガイド

シンプルな機能関数を追加します。

機能のないプラグインには意味がありません。では、最も基本的な機能を追加しましょう:記事の内容の最後に自動的にカスタムテキストを追加する機能です。ヘッダーのコメントの下に、以下のPHPコードを追加してください:

// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

function myfp_add_footer_text( $content ) {
    // 检查是否在单个文章页面
    if ( is_single() ) {
        $custom_text = '<p><em>この記事をお読みいただき、ありがとうございます!このメッセージは「私の最初のカスタムプラグイン」によって生成されました。</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter( 'the_content', 'myfp_add_footer_text' );

このコードは、ある関数を定義しています。myfp_add_footer_textそれは以下の方法で機能します:add_filterこのフックはWordPressにマウントされています。the_contentフィルター上です。関数の内部で使用されています。is_single()条件判断を用いて、テキストが単一の記事ページにのみ追加されるようにし、ホームページやアーカイブページに影響が出ないようにしています。関数名には短い接頭辞が使用されています。myfp(「My First Plugin」という略称を使用することで、他のプラグインの関数名との衝突を避けることができます。これは良い慣行です。)

プラグインのコア開発技術について深く理解する

プラグインを強力でプロフェッショナルなものにするためには、WordPressが提供する一連のコアAPIや開発モデルを習得する必要があります。

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

アクションフックとフィルターの使用

アクションフック(Action Hooks)とフィルターフック(Filter Hooks)は、WordPressプラグイン開発において非常に重要な要素です。アクションフックを使用すると、特定のタイミングでコードを実行することができます。例えば、記事が公開されたときなどです。publish_post)またはバックエンド管理ページが読み込まれる際にadmin_initフィルターを使用すると、データを「変更」することができます。例えば、以前に記事の内容を変更した例のようにです。

管理メニューページを作成することは、アクションフックを使用する典型的なシナリオです。コードを適切な場所に掛ける(つまり、関連する処理を実行するために使用する)ことで、メニューの機能をカスタマイズしたり、新しい機能を追加したりすることができます。admin_menuフックの上に…。以下は、シンプルな設定ページを作成するための例です:

function myfp_create_admin_menu() {
    add_menu_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限能力
        'myfp-settings-page', // 菜单slug
        'myfp_settings_page_html', // 回调函数,用于输出页面HTML
        'dashicons-admin-generic', // 图标
        80 // 菜单位置
    );
}
add_action( 'admin_menu', 'myfp_create_admin_menu' );

function myfp_settings_page_html() {
    // 检查用户权限
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <p>これは私の最初のプラグインの設定ページです。</p>
    </div>
    あなたのアカウントは有効です。あなたはログインしています。

プラグインのオプションとデータの保存を実現する

ほとんどのプラグインでは、ユーザーによって設定された情報を保存する必要があります。WordPressでは、そのための機能が用意されています。Options APIデータを安全に保存し、検索するための方法です。以下の方法を利用することができます:add_option()get_option()update_option()関数です。インタラクティブな設定フォームを作成するには、HTMLフォームとWordPressのセキュリティ関連関数を組み合わせて使用する必要があります。wp_nonce_field()安全なランダム数を生成し、検証するためのものです。sanitize_text_field()ユーザーの入力内容をクリーンアップするために使用されます。

推薦図書 ゼロから始める:WordPressプラグイン開発の完全ガイドと実践トレーニング

以下は、データの保存処理の流れを簡略化した例です:

if ( isset( $_POST['myfp_submit'] ) ) {
    // 验证安全随机数
    if ( ! wp_verify_nonce( $_POST['myfp_nonce'], 'myfp_save_settings' ) ) {
        wp_die( '安全校验失败!' );
    }

// 清理并保存数据
    $user_text = sanitize_text_field( $_POST['custom_text'] );
    update_option( 'myfp_custom_text', $user_text );

echo '<div class="notice notice-success"><p>設定が保存されました!</p></div>';
}

スクリプトとスタイルシートの導入

ウェブサイトのフロントエンドのパフォーマンスに影響を与えないように、プラグインで導入されたJavaScriptファイルやCSSファイルは正しく使用する必要があります。wp_enqueue_script()wp_enqueue_style()これはWordPressが依存関係を管理し、衝突を避けるのに役立ちます。正しいマウントフックは以下の通りです:wp_enqueue_scripts(フロントエンド用)およびadmin_enqueue_scripts(バックエンド用)

インターサーバー共有ホスティング
共有ホスティング月$2.50米ドル, 最初の月$0.1米ドルプロモーションコードtryinterserver, 461クラウドアプリケーションスクリプト, 1クリックインストール.
function myfp_enqueue_frontend_assets() {
    wp_enqueue_style(
        'myfp-frontend-style',
        plugins_url( 'assets/css/frontend-style.css', __FILE__ ),
        array(),
        '1.0.0'
    );
}
add_action( 'wp_enqueue_scripts', 'myfp_enqueue_frontend_assets' );

プラグインのリリースとメンテナンスに関するベストプラクティス

開発が完了した後、プラグインの持続可能なメンテナンスや配布方法について考える必要があります。

セキュリティとコードレビュー

セキュリティはプラグイン開発において最も重要な要素です。すべてのユーザー入力は信頼できないものと見なす必要があり、そのような入力に対しては適切な処理を行う必要があります。esc_html()esc_url()sanitize_text_field()これらの関数を使用してデータをエスケープ処理したりクリーニングしたりした後で、ブラウザに表示したりデータベースに保存したりします。SQLクエリを直接使用する場合には、必ずこれらの処理を行う必要があります。$wpdbクラス及びその…prepare()SQLインジェクション攻撃を防ぐ方法として、定期的にWordPress用のコードスナフリングツールを使用してコードレビューを行うことが推奨されます。これにより、コーディング規格を遵守し、潜在的な脆弱性を発見するのに役立ちます。

国際化(Internationalization)とローカライゼーション(Localization)の準備

プラグインを世界中のユーザーに利用してもらいたい場合、国際化(i18n)は欠かせません。つまり、ユーザーに表示されるすべてのテキストを各国語に対応させる必要があるということです。()または_e()翻譳関数をラップ(encapsulate)する必要があります。例えば:echo (‘Hello World!‘, ‘my-first-plugin‘);プラグインのヘッダー部分で定義されたものです。Text Domainmy-first-plugin)それは翻訳機能で使用されるテキスト領域と完全に一致していなければなりません。その後、Poeditのようなツールを使用して作成することができます。.potテンプレートファイルは、翻訳者が異なる言語のテキストを生成するために使用されます。.moファイル。

バージョンアップと互換性

プラグインに新しい機能を追加したり、バグを修正したりする際には、新しいバージョンを公開する必要があります。必ずメインファイルのヘッダー部分を更新してください。Version情報です。アップグレードの手順を提供することをお勧めします。プラグインが有効になる際にバージョン番号をチェックし、必要に応じてアップグレードを行ってください。register_activation_hook必要なデータベースの更新やデータのマイグレーションを実行してください。その際には、readme.txtファイルの中には、更新履歴、対応しているWordPressのバージョン、インストール手順が明確に記録されています。特に、このプラグインをWordPressの公式ディレクトリに提出する予定である場合には、これらの情報が非常に重要です。

概要

プラグインの基本概念を理解し、機能関数を含み、ページやリソースの読み込みを管理する完全なプラグインを実際に作成するまでに、あなたはWordPressプラグイン開発の世界に一歩踏み込みました。重要なのは、アクションとフィルターフックを使いこなし、データや設定項目を安全に処理すること、そして国際化やセキュリティのベストプラクティスに従うことです。プラグイン開発は継続的な学習の過程であり、テストを繰り返し、コアコードや他の優れたプラグインのソースコードを読むことで、より強力で専門的なツールを構築することができます。これからは、この基盤の上に立って、あなたが思い描くユニークな機能を考案し、実現していくことができます。

FAQ よくある質問

###: WordPressプラグインを開発するには、どのようなプログラミングの基礎が必要ですか?
WordPressプラグインの開発には、PHPプログラミング言語の基礎知識が必要です。なぜなら、プラグインは主にPHPで書かれているからです。また、HTML、CSS、JavaScriptについても基本的な理解が必要であり、これらはユーザーインターフェースやインタラクションの構築に使用されます。MySQLデータベースの基本概念に精通していると、WordPressのデータ保存方法をよりよく理解するのに役立ちます。

プラグインのメインPHPファイルの名前は自由に決めることができますか?

はい、可能です。しかし、通常はプラグインのフォルダ名と一致するか、明確な説明を含む名前を使用することをお勧めします。最も重要なのは、ファイルの名前に関わらず、その冒頭にあるプラグインのヘッダーコメント(その内容について記載されている部分)を必ず確認することです。Plugin Nameそのコメントの内容は正確でなければなりません。なぜなら、WordPressはこの情報を読み取ることでプラグインを認識しているからです。

どうすれば、自分が書いた関数名が他のプラグインと衝突するのを避けることができるでしょうか?

ベストプラクティスとしては、すべての関数、クラス、変数、定数に一意の接頭辞を付けて名前を付けることです。この接頭辞は十分にユニークである必要があり、通常はプラグインの略称やブランド名に関連しています。例えば、プラグインの名前が「Super SEO Tools」であれば、以下のように接頭辞を使用することができます:sset_またはsst_「前缀として、例えば…」sst_generate_meta_descriptionPHPの名前空間を使用する(対応している環境であれば)は、より現代的で効果的な解決策です。

プラグイン内でデータベースのテーブルを作成することはできますか?

はい、しかし非常に慎重に行う必要があります。カスタムのデータベーステーブルを作成するのは、絶対に必要な場合にのみに限ってください。なぜなら、WordPressのOptions APIや組み込まれているPosts/Post Metaテーブルは、ほとんどのデータ保存ニーズに十分対応できるほど柔軟だからです。新しいテーブルを作成する必要がある場合は、以下の手順に従ってください:$wpdbオブジェクトを処理し、プラグインのアクティベーションフック(使用)が正しく機能するようにしてください。register_activation_hookテーブルの作成処理を行う際には、アンインストール時にテーブルを削除するオプションも考慮する必要があります。

開発が完了したら、プラグインを他の人に共有して使用してもらうにはどうすればよいでしょうか?

個人や顧客向けのプロジェクトについては、直接パッケージ化します。zipそのファイルで大丈夫です。もし公開して配布したい場合、最も正式な方法はWordPressの公式プラグインディレクトリに提出することです。そのためには、ディレクトリの要件を満たすプラグインを作成する必要があります。readme.txtファイルを準備し、コードがオープンソースライセンス(例:GPL)に準拠していることを確認してください。提出する前に、プラグインがさまざまな環境での互換性と安全性を十分にテストしてください。