準備作業と環境設定
コードの執筆を始める前に、安定して効率的な開発環境を整えることが非常に重要です。これには、ローカルで使用する開発ツールだけでなく、WordPressのコアアーキテクチャを理解することも含まれます。
ローカル開発環境の設定
ローカルサーバーを使用した統合環境の利用をお勧めします。例えば、Local by Flywheel、XAMPP、MAMPなどです。これらのツールを使えば、PHP、MySQL、ウェブサーバーをワンクリックでインストールし、設定することができます。使用しているPHPのバージョンが現在の主流のWordPressバージョンと互換性があることを確認してください(通常はPHP 7.4以上が必要です)。また、エラーデバッグ機能を有効にしておくことも大切です。WordPressの設定に関しては…wp-config.phpファイル内で設定を行います。WP_DEBUGためにtrueこれにより、開発中に発生するすべての警告やエラーが表示されるため、問題の迅速な特定が可能になります。
プラグインの基本知識と構造設計
標準的WordPressプラグインとは、少なくとも1つのPHPファイルを含むフォルダーであり、WordPressのディレクトリ内に配置されます。/wp-content/plugins/プラグインのメインファイルのヘッダーには、特定のメタ情報のコメントを含める必要があります。WordPressはこれによってプラグインを認識し、管理します。計画を立てる際には、プラグインの核心的な機能、必要なデータベーステーブル(必要であれば)、そしてWordPressのメニューやツール、ショートコードなどのシステムとどのように統合するかを明確にする必要があります。明確な計画により、後の開発での構造の混乱を避けることができます。
推薦図書 入門から上級者まで:WordPressプラグイン開発の完全ガイドと実践トレーニング。
最初のプラグインのメインファイルを作成します。
すべてはメインファイルから始まります。これがプラグインのエントリーポイントであり、プラグインの基本情報を定義し、コア機能をマウントする役割を果たします。
プラグインのヘッダー情報を作成する
プラグインのメインファイルのヘッダーには、標準的な形式のプラグイン情報に関するコメントを含める必要があります。このコメントは以下のようになります:/* ... */パッケージには、プラグインの名前、説明、バージョン、作者などの情報が含まれます。WordPressの管理画面にあるプラグイン一覧ページでは、これらの情報が読み取られて表示されます。例えば、最もシンプルなプラグインのヘッダーの書き方は次のようになります:
<?php
/**
* Plugin Name: 我的第一个自定义插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习WordPress插件开发的基础插件。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ その中で、Text Domain国際化翻訳用のテキストです。後続で翻訳関数を呼び出す際に使用するテキストフィールドと一致していることを必ず確認してください。
プラグインの有効/無効化ロジックの実装
ユーザーがプラグインを「有効」にするか「無効」にするとき、いくつかの初期化処理やクリーンアップ処理を実行する必要がある場合があります。これは、有効化および無効化のフックを登録することによって実現されます。関連する関数は以下の通りです:register_activation_hook()とregister_deactivation_hook()アクティベーションフックは、カスタムデータベーステーブルの作成や初期化オプションの設定など、一度限りの処理によく使用されます。プラグインのメイン実行ファイル内に初期化コードを直接記述しないように注意してください。初期化コードはフック関数内に封じ込める必要があります。そうしないと、コードがページが読み込まれるたびに実行されてしまいます。
// 注册激活钩子
register_activation_hook( __FILE__, 'my_first_plugin_activate' );
function my_first_plugin_activate() {
// 创建选项或数据库表
if ( ! get_option( 'my_plugin_options' ) ) {
add_option( 'my_plugin_options', [ 'default_key' => 'default_value' ] );
}
// 可能需要刷新WordPress的重写规则
flush_rewrite_rules();
}
// 注册停用钩子
register_deactivation_hook( __FILE__, 'my_first_plugin_deactivate' );
function my_first_plugin_deactivate() {
// 清理临时数据,但通常保留用户设置
// 例如:删除定时任务
wp_clear_scheduled_hook( 'my_daily_event' );
// 注意:一般不在此处删除数据库表或选项,卸载时会处理
} コア機能開発の実践
基本構造をマスターした後、WordPressのコア拡張メカニズムについてさらに深く学びます。アクションフックやフィルターを利用して機能を追加していきます。
推薦図書 WordPressプラグイン開発入門ガイド:ゼロから最初のカスタムプラグインを作成する方法。
アクションフックを使用して機能を追加する
アクションフック(Action Hooks)を使用すると、WordPressの実行フローの特定のポイントで自分のコードを挿入することができます。例えば、記事の内容の最後に自動的に著作権情報を追加したい場合には、アクションフックを活用することができます。the_contentこのフィルターは、特殊な種類のアクションに属します。より典型的なアクションとしては、例えば…wp_enqueue_scriptsこれは、フロントエンドのスクリプトやスタイルを安全に読み込むために使用されます。add_action()この関数を使って、あなたのコールバック関数をマウント(つまり、システムに登録)することができます。
// 在文章内容末尾添加自定义HTML
add_filter( 'the_content', 'my_content_filter' );
function my_content_filter( $content ) {
if ( is_single() ) {
$custom_html = '<div class="my-copyright">この記事の著作権は当サイトに帰属します。</div>';
$content .= $custom_html;
}
return $content;
}
// 正确加载前端资源
add_action( 'wp_enqueue_scripts', 'my_plugin_enqueue_assets' );
function my_plugin_enqueue_assets() {
wp_enqueue_style(
'my-plugin-style',
plugins_url( 'assets/css/style.css', __FILE__ ),
[],
'1.0.0'
);
wp_enqueue_script(
'my-plugin-script',
plugins_url( 'assets/js/script.js', __FILE__ ),
[ 'jquery' ], // 声明依赖jQuery
'1.0.0',
true // 在页面底部加载
);
} 管理ページとメニューを作成する
ユーザーがバックエンドであなたのプラグインを設定できるようにするためには、管理メニューやページを作成する必要があります。add_menu_page()またはadd_submenu_page()このプロセスは通常、関数としても実装されます。admin_menuアクションフックの中で、コールバック関数を使用してページのHTMLコンテンツを出力し、ユーザーが送信したフォームデータを処理する必要があります(通常はWordPressの設定APIを使用します)。settings_api(簡略化すると)
add_action( 'admin_menu', 'my_plugin_create_admin_menu' );
function my_plugin_create_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-plugin-settings', // 菜单slug
'my_plugin_settings_page', // 显示页面的回调函数
'dashicons-admin-generic', // 图标
80 // 位置
);
}
function my_plugin_settings_page() {
// 检查用户权限
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
?>
<div class="wrap">
<h1></h1>
<form action="/ja/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段、非ce等
settings_fields( 'my_plugin_options_group' );
do_settings_sections( 'my-plugin-settings' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="ja"/></form>
</div>
あなたのアカウントは有効です。あなたはログインしています。 プラグインのセキュリティ、最適化、および公開
プロフェッショナルなプラグインは、機能が完備しているだけでなく、セキュリティやパフォーマンスにも注意を払い、リリース前の最終準備をしっかり行う必要があります。
データの検証とエスケープ処理を実現する
セキュリティはプラグイン開発において最も重要な要素です。ユーザーや外部からのすべての入力データ(例えば…)$_GET, $_POST, $_REQUEST)どれも信頼できません。データをデータベースに保存する前には、必ず検証(Validation)を行い、データが期待される形式に合致していることを確認する必要があります。また、データをHTML、JavaScript、またはURLに出力する際にはエスケープ(Escaping)処理を行い、クロスサイトスクリプティング(XSS)攻撃を防ぐ必要があります。WordPressには、これらの処理を支援する豊富な関数が用意されています。sanitize_text_field()、esc_html()、esc_url()とwp_kses_post()その他
// 处理表单提交示例
if ( isset( $_POST['my_input'] ) ) {
// 1. 验证和清理输入
$clean_input = sanitize_text_field( wp_unslash( $_POST['my_input'] ) );
// 2. 处理数据...
update_option( 'my_saved_input', $clean_input );
// 3. 输出时进行转义
echo '<p>あなたが入力したのは:`.esc_html(get_option('my_saved_input'))`.'</p>';
} 国際化(Internationalization)とローカライゼーション(Localization)の準備を行います。
あなたのプラグインを世界中のユーザーが利用できるようにするためには、国際化(i18n)の準備が必要です。つまり、ユーザーに表示されるすべてのテキストはコード内に直接記述するのではなく、WordPressの翻訳機能を使って処理する必要があります。主に以下の方法を使用します:()翻訳後の文字列を表示するために使用されます。_e()直接出力に使用するために、esc_html()などはエスケープ処理に使用されます。あなたがプラグインのヘッダー部分で定義したものです。Text Domainここでそのまま使用してください。その後、Poeditのようなツールを使って作成することができます。.potテンプレートファイル:翻訳者が使用するためのものです。.poと.mo翻訳ファイル。
// 在代码中包装可翻译字符串
$greeting = __( 'Hello, world!', 'my-first-plugin' );
_e( 'Settings saved successfully!', 'my-first-plugin' );
// 带占位符的翻译
printf(
/* translators: %s: User's name */
__( 'Welcome, %s!', 'my-first-plugin' ),
esc_html( $user_name )
); プラグインのリリースリストを準備します。
プラグインをWordPressの公式プラグインライブラリに提出するか、配布する前に、以下のチェックを行ってください:コードがWordPressのコーディングスタンダードに準拠していることを確認してください。また、詳細な説明文も作成してください。readme.txtファイルの形式は公式の要件に準拠していなければなりません。さまざまなテーマや他のプラグインとの互換性を含む、包括的な機能テストを実施してください。プラグインフォルダを圧縮する際には、必要なファイルのみを含め、バージョン管理システムのディレクトリは含めないようにしてください。.git)またはIDEの設定ファイルです。
推薦図書 WordPressプラグイン開発入門ガイド:ゼロから最初の機能拡張を構築する。
概要
ゼロからプロフェッショナルなWordPressプラグインを開発することは、環境の準備、構造の計画、コードの実装、そしてセキュアなリリースなど、多くの段階を含む体系的なプロセスです。最も重要なのは、WordPressのフックシステム(アクションとフィルター)を深く理解することです。これはプラグインの機能を拡張するための核心的なメカニズムです。また、セキュリティと国際化を開発の基本要件として位置づけ、後から追加するのではなく、最初から考慮に入れる必要があります。WordPressが提供するAPIの使用、データの厳格な検証、適切なコード構造の設計といったベストプラクティスに従うことで、機能豊富で安定性が高く、メンテナンスしやすいプラグインを作成することができ、最終的にWordPressエコシステムに高品質な製品を提供することができるのです。
FAQ よくある質問
###: WordPressプラグインを開発するには、どのようなプログラミングの知識が必要ですか?
WordPressプラグインを開発するには、主にPHP言語の習得が必要です。なぜならWordPress自体がPHPで書かれているからです。また、フロントエンドの表示やインタラクションを処理するためには、HTML、CSS、JavaScriptについての基本的な知識も必要です。さらに、複雑なデータ操作を行う際には、MySQLに関する基礎知識も役立ちます。
WordPressプラグインのコードをどのようにデバッグするか?
最も効果的な方法は…wp-config.phpファイル内で有効にするWP_DEBUGそれを次のように設定してください:define( 'WP_DEBUG', true );このようにすると、すべてのPHPエラー、警告、および通知が表示されます。より複雑なデバッグを行う場合には、以下の方法を使用できます:error_log()この関数は、変数情報をサーバーのエラーログに書き込むか、専用のデバッグプラグインを使用してクエリやフック(hook)の動作を追跡します。
私のプラグインは、テーマや他のプラグインとどのように互換性を持たせることができるのでしょうか?
提高兼容性的最佳实践是:始终使用WordPress官方提供的API和函数,避免使用私有函数或直接操作数据库;为你的函数、类、选项名称添加唯一前缀,防止命名冲突;在可能的情况下,提供过滤器(apply_filters他の開発者があなたのプラグインの出力を変更できるようにすること;また、プラグインに特定のスタイルを組み込みすぎないように注意し、テーマのデザインが崩れないようにすること。
プラグイン用に独立したデータテーブルを作成する必要がありますか?
必ずしもそうとは限りません。ほとんどの場合、WordPressに内蔵されているデータ保存方法、例えばカスタムポストタイプ(Custom Post Type)、タクソノミー(Taxonomy)、オプションテーブル(Option Table)などを優先して使用すべきです。wp_optionsこれらのAPIは十分に最適化されており、コアシステムと深く統合されています。カスタムデータテーブルを作成することを検討するのは、データ構造が非常に複雑で既存のシステムにマッピングできない場合のみです。なぜなら、それによってメンテナンスや移行の複雑さが増すからです。
私のプラグインをWordPressの公式プラグインディレクトリにどのように提出するか?
まず、WordPress.orgでアカウントを作成し、プラグインを提出する必要があります。あなたのプラグインはいくつかの要件を満たさなければなりません。その要件には、GPLv2またはそれ以上のバージョンと互換性のあるライセンスの使用、コードが基本的な基準に適合していること、正しい形式でコードが記述されていることなどが含まれます。readme.txtファイルなどを提出すると、プラグインの審査チームが手動で内容を確認します。このプロセスには数週間かかる場合があります。審査に合格すると、公式のSVNリポジトリにアクセスできるようになり、プラグインのバージョン管理を行うことができます。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。