WordPressプラグイン開発完全ガイド:ゼロからあなたの最初の機能プラグインを作成する

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

WordPressプラグイン開発環境と基本準備

在开始编写代码之前,一个稳定且高效的开发环境至关重要。这不仅能提升你的开发效率,还能帮助你遵循最佳实践,确保插件的质量和兼容性。

首先,你需要一个本地的WordPress开发环境。你可以使用XAMPP、MAMP、Local by Flywheel或Docker等工具快速搭建。确保你的环境运行着较新版本的PHP(建议7.4或以上)和MySQL/MariaDB。一个本地的开发环境允许你自由地进行测试和调试,而不会影响线上网站。

其次,你需要一个代码编辑器或集成开发环境(IDE)。Visual Studio Code、PhpStorm或Sublime Text都是优秀的选择,它们能提供语法高亮、代码提示和调试功能。同时,建议安装一些代码质量工具,如PHP_CodeSniffer,并配置WordPress编码标准,以确保你的代码风格与WordPress核心保持一致。

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

最后,理解WordPress插件的基本结构是第一步。一个最简单的插件只需要一个主PHP文件,并在文件头部包含特定的插件信息注释。这个文件是插件的入口,WordPress通过读取这些信息来识别和管理你的插件。

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

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

让我们从创建一个最简单的“Hello World”插件开始。这个过程将帮助你理解插件的基本框架和WordPress是如何识别插件的。

まず、WordPressのインストールディレクトリの下にあるwp-content/plugins文件夹中,创建一个新的文件夹。文件夹的名称应该是唯一的、描述性的,并且使用小写字母和连字符,例如my-first-plugin

在该文件夹内,创建一个主PHP文件,文件名通常与文件夹名相同,例如my-first-plugin.phpこのファイルの冒頭には、WordPressの標準に準拠したプラグインヘッダーのコメントを追加する必要があります。これはプラグインの「身分証明書」のようなもので、名前、説明、バージョン、作者などの情報が含まれています。このコメントがないと、WordPressはバックエンドのプラグイン一覧であなたのプラグインを見つけることができません。

以下是一个最基本的插件文件示例:

推薦図書 ゼロから始める:なぜWordPressプラグイン開発を選ぶのか

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

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit; // 如果ABSPATH未定义,则退出
}

保存这个文件后,登录你的WordPress后台,进入“插件”页面,你应该能看到“我的第一个插件”出现在插件列表中。此时,你可以激活它,但它还不会做任何事情。代码中的if ( ! defined( ‘ABSPATH’ ) )检查是一个重要的安全实践,用于防止用户直接通过URL访问你的插件文件,确保代码只在WordPress环境中执行。

为插件添加核心功能

一个激活的插件需要执行一些操作。在WordPress中,这主要通过“动作钩子”(Action Hooks)和“过滤器钩子”(Filter Hooks)来实现。它们是WordPress插件架构的基石,允许你在特定的时间点插入自己的代码或修改数据。

利用动作钩子添加管理后台通知

动作钩子允许你在WordPress执行的特定时刻(例如,初始化完成后、在页面头部加载时、在保存文章时)运行你自己的函数。让我们添加一个简单的功能:在WordPress管理后台的顶部显示一条欢迎信息。

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

私たちは使用する予定です。admin_notices这个动作钩子。首先,你需要创建一个函数来输出HTML内容,然后使用add_action()函数将这个函数“挂载”到钩子上。

在你的主插件文件中,添加以下代码:

/**
 * 在管理后台显示欢迎通知
 */
function myfp_display_admin_notice() {
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p>「私の最初のプラグイン」のご利用をお待ちしておりました!プラグインは正常にアクティベートされました。</p>
    </div>
    &lt;?php
}
// 将函数挂载到 admin_notices 动作钩子
add_action( &#039;admin_notices&#039;, &#039;myfp_display_admin_notice&#039; );

保存并刷新你的WordPress后台,你应该能在页面顶部看到一个绿色的成功提示框。注意,函数名myfp_display_admin_notice使用了前缀myfp_(プラグイン名の略称から取られています)これは、他のプラグインやテーマの関数名と衝突するのを避けるためのものであり、必ず守らなければならない命名規則です。

推薦図書 WordPressプラグイン開発の完全ガイド:ゼロから始めて、高品質なWordPress拡張機能を構築する

使用过滤器钩子修改文章内容

过滤器钩子允许你修改WordPress中传递的数据。例如,你可以修改文章的内容、标题或摘要在显示前的样子。让我们创建一个功能,在每篇文章的末尾自动添加一段版权声明。

私たちは使用する予定です。the_content这个过滤器钩子。你需要创建一个接收原始内容($contentその関数を修正し、修正後の内容を返します。

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

在你的插件文件中添加以下代码:

/**
 * 在文章内容末尾添加版权声明
 * @param string $content 原始的文章内容
 * @return string 修改后的文章内容
 */
function myfp_add_copyright_to_content( $content ) {
    // 仅对主循环中的单篇文章页面生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $copyright_text = '<p><em>この記事の著作権は当ウェブサイトに帰属します。転載する場合は出典を明記してください。</em></p>';
        $content .= $copyright_text;
    }
    return $content;
}
// 将函数挂载到 the_content 过滤器钩子,优先级为10
add_filter( 'the_content', 'myfp_add_copyright_to_content', 10 );

现在,当你查看网站上的任何一篇文章时,内容的底部都会出现你添加的版权声明。函数中的条件判断is_single() && in_the_loop() && is_main_query()非常重要,它确保了这段文字只会在前台单独的文章页面主循环中显示,而不会出现在首页列表、小工具或其他地方,这是编写高质量插件需要注意的细节。

插件国际化与最佳实践

为了让你的插件能被全世界的用户使用,国际化(i18n)是必不可少的一步。WordPress提供了完整的函数来支持将插件中的文本翻译成其他语言。

准备插件文本以支持翻译

你需要使用特定的函数来包裹所有在插件中输出给用户看的字符串。最常用的是()翻訳を取得するために使用されます。_e()用于直接回显翻译,以及esc_html()用于需要转义HTML的上下文。

首先,修改我们之前创建的通知函数和版权函数中的文本,使用翻译函数:

function myfp_display_admin_notice() {
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( '欢迎使用“我的第一个插件”!插件已成功激活。', 'my-first-plugin' ); ?></p>
    </div>
    &lt;?php
}

function myfp_add_copyright_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $copyright_text = &#039;<p><em>' . esc_html__( '本文版权归本网站所有,转载请注明出处。', 'my-first-plugin' ) . '</em></p>';
        $content .= $copyright_text;
    }
    return $content;
}

注意,每个翻译函数都包含第二个参数‘my-first-plugin’これは、プラグインのヘッダー部分で定義されたものです。Text Domainこれは一意の識別子であり、WordPressにこれらの文字列がどのプラグインに属しているかを知らせるために使用されます。

然后,你需要在插件头部注释中指定的Domain Path(つまり)/languages文件夹)中放置翻译文件(.po 和 .mo 文件)。你可以使用Poedit等工具来创建和管理这些翻译文件。

遵循安全与代码规范

安全性是插件开发的重中之重。永远不要信任用户输入的数据。在处理任何来自$_GET$_POSTまたは$_REQUEST的数据前,必须进行验证、清理和转义。

WordPress提供了丰富的函数来帮助你:
* 验证(Validation):检查数据是否符合预期格式(如is_email())。
* 清理(Sanitization):清除数据中的非法字符(如sanitize_text_field()sanitize_email())。
* 转义(Escaping):在将数据输出到HTML、JavaScript或URL之前,确保其安全(如esc_html()esc_js()esc_url())。

此外,直接操作数据库时,务必使用WordPress数据库类$wpdb提供的方法,如$wpdb->prepare()来防止SQL注入攻击。

概要

通过本指南,你完成了从零开始创建一个功能完整的WordPress插件的全过程。你学会了如何搭建环境、创建基础插件文件、利用动作和过滤器钩子为WordPress添加功能,以及如何通过国际化和安全实践来提升插件的专业度和可用性。插件开发的核心在于理解并熟练运用WordPress的钩子系统,它提供了无与伦比的扩展性和灵活性。记住,从简单的功能开始,逐步迭代,并始终将安全性和代码质量放在首位,你就能打造出强大而可靠的WordPress插件。

FAQ よくある質問

一个插件必须放在一个文件夹里吗?

不一定。一个非常简单的单文件插件可以直接将plugin-name.php放在wp-content/plugins/目录下。但是,对于任何包含多个文件(如CSS、JS、图片或语言文件)的插件,强烈建议使用一个独立的文件夹来组织所有相关文件,这能使结构更清晰,便于管理。

如何为我的插件创建一个设置页面?

你可以使用WordPress提供的设置API来创建专业、安全的设置页面。主要步骤包括:使用add_menu_page()またはadd_submenu_page()函数注册一个菜单页,然后使用register_setting()add_settings_section()add_settings_field()等函数来定义设置字段和章节。最后,编写一个回调函数来输出设置页面的HTML表单。

插件开发中,前缀为什么如此重要?

WordPress是一个由插件和主题组成的庞大生态系统。所有代码都运行在同一个全局命名空间中。如果你定义了一个名为get_data()的普通函数,而另一个插件也定义了同名的函数,就会导致致命错误,使网站崩溃。使用唯一的前缀(如插件名称缩写)可以极大避免这种冲突,确保插件的兼容性。

プラグインのコードをどのようにデバッグすればよいでしょうか?

WordPress开发中,调试的首选工具是启用WP_DEBUGあなたはウェブサイト上でそれを行うことができます。wp-config.php文件中,通过设置define( ‘WP_DEBUG’, true );来启用它。这将使所有PHP错误、警告和通知显示在屏幕上。对于更复杂的调试,你可以使用error_log()函数将信息写入服务器的错误日志,或者使用专业的PHP调试工具如Xdebug与你的IDE配合进行逐行调试。