WordPress 插件开发入门指南:从零到一构建你的第一个功能扩展套件

3 分钟阅读时间
2026-03-18
2026-06-04
2,112
通过下方链接进行购物时,您无需支付额外费用,我就能获得佣金。.

准备工作与环境搭建

在開始編寫程式碼之前,你需要一個合適的開發環境。這包括一個本地的 WordPress 安裝和一個程式碼編輯器。推薦使用 XAMPP、MAMP、Local by Flywheel 或 Laragon 等工具來快速搭建本地伺服器環境。確保你的環境執行著較新版本的 PHP(建議 7.4 及以上)和 MySQL/MariaDB。

接下來,你需要了解 WordPress 外掛的基本結構。一個外掛最核心的檔案是一個主 PHP 檔案,其檔名和目錄名可以自定義,但必須包含一個特定的外掛頭註釋,用於向 WordPress 宣告你的外掛。你可以在 WordPress 安裝目錄的 wp-content/plugins 資料夾下建立一個新資料夾,例如 my-first-plugin

在這個資料夾內,建立你的主外掛檔案,例如命名為 my-first-plugin.php。這個檔案的開頭必須包含標準的外掛資訊註釋。

推荐阅读 WordPress 插件开发入门指南:从零开始构建你的第一个自定义功能扩展套件

建立你的第一個外掛檔案

現在,讓我們動手建立外掛的基礎骨架。在你的外掛目錄中,開啟主 PHP 檔案,並寫入以下標準的外掛頭資訊。

UltaHost WordPress 主機
30天退款保證,無限頻寬與資料庫,免費的 DDoS 防護,購買3年優惠50%
<?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
 */

這段註釋是 WordPress 識別外掛的關鍵。其中,Plugin Name 是必填項,其他均為可選。儲存檔案後,你可以在 WordPress 後臺的“外掛”頁面中看到這個新外掛,並可以啟用它。目前它還沒有任何功能。

為外掛新增一個簡單功能

一個最簡單的功能是在網站的管理後臺新增一個自定義的管理選單。我們將使用 add_action 函式掛載到 admin_menu 這個動作鉤子上。

在主外掛檔案中,註釋塊之後,新增以下程式碼:

// 在管理菜单中添加一个顶级菜单
function mfp_add_admin_menu() {
    add_menu_page(
        '我的第一个插件设置', // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',     // 权限要求
        'my-first-plugin',    // 菜单 slug
        'mfp_settings_page',  // 回调函数,用于输出页面内容
        'dashicons-admin-generic', // 图标(可选)
        6                     // 菜单位置(可选)
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 定义设置页面的回调函数
function mfp_settings_page() {
    ?>
    <div class="wrap">
        <h1></h1>
        <p>欢迎来到我的第一个插件的设置页面!</p>
        <form method="post" action="/zh-tw/options.php/" data-trp-original-action="options.php">
            <?php
            // 后续可以在这里添加设置字段
            ?>
            <p class="submit">
                <input type="submit" name="submit" id="submit" class="button button-primary" value="保存更改">
            </p>
        <input type="hidden" name="trp-form-language" value="zh-tw"/></form>
    </div>
    &lt;?php
}

這段程式碼建立了一個新的頂級選單“我的外掛”,點選後會進入一個簡單的設定頁面。這裡使用了 add_menu_page 函式來註冊選單,並定義了一個回撥函式 mfp_settings_page 來渲染頁面內容。

推荐阅读 WordPress 插件开发入门指南:从零到一,构建你的第一个功能性插件

使用鉤子與過濾器擴充套件功能

WordPress 的核心強大之處在於其外掛架構,這主要透過動作鉤子和過濾器鉤子實現。動作鉤子允許你在特定時刻執行自定義程式碼,而過濾器鉤子允許你修改資料。

利用動作鉤子新增頁面腳註

假設我們想在網站的所有文章末尾自動新增一段自定義文字。這可以透過掛載到 the_content 這個過濾器鉤子來實現。注意,雖然名字是“過濾器”,但 the_content 通常用於修改文章內容輸出。

// 在文章内容末尾添加自定义文本
function mfp_append_text_to_content($content) {
    // 确保只在主循环的单篇文章页面添加
    if (is_single() && in_the_loop() && is_main_query()) {
        $custom_text = '<p><em>本文由“我的第一个插件”为您呈现。</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter('the_content', 'mfp_append_text_to_content');

這個函式 mfp_append_text_to_content 接收原始的文章內容 $content,在檢查了上下文條件(確保是單獨的文章頁面)後,將一段自定義文字附加到內容末尾,最後返回修改後的內容。透過 add_filter 將其註冊到 the_content 鉤子。

hostng.com 共享主机
高效能,配备 AMD EPYC CPU、NVMe SSD 存储和 LiteSpeed,全天候 24 小时专业内部支持,先进的安全措施包括 SSL、暴力破解、恶意软件和 DDoS 防护,节省高达 731 TB/月的带宽成本。

建立可配置的外掛選項

一個實用的外掛通常需要一些可由使用者配置的選項。WordPress 提供了設定 API 來安全地處理和管理選項。我們將為之前的設定頁面新增一個簡單的文字欄位。

首先,我們需要註冊一個設定,並將其新增到已有的選單頁面中。

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个新的设置到 “reading” 组(或自定义组)
    register_setting('mfp_plugin_settings', 'mfp_custom_message');

// 在现有页面内添加一个设置区域
    add_settings_section(
        'mfp_section_id',
        '自定义消息设置',
        'mfp_section_callback',
        'my-first-plugin'
    );

// 向该区域添加一个字段
    add_settings_field(
        'mfp_field_id',
        '页脚消息',
        'mfp_field_callback',
        'my-first-plugin',
        'mfp_section_id'
    );
}
add_action('admin_init', 'mfp_settings_init');

// 区域描述回调函数
function mfp_section_callback() {
    echo '<p>在这里配置插件在文章末尾显示的消息。</p>';
}

// 字段输出回调函数
function mfp_field_callback() {
    // 从数据库中获取已保存的选项值
    $message = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
    echo '<input type="text" name="mfp_custom_message" value="' . esc_attr($message) . '" class="regular-text">';
    echo '<p class="description">输入你想在每篇文章末尾显示的消息。</p>';
}

然後,需要修改之前定義的 mfp_settings_page 函式,在表單中輸出設定欄位。

推荐阅读 轻松上手到精通:WordPress插件开发完整指南及实战教程

// 更新后的设置页面回调函数
function mfp_settings_page() {
    ?>
    <div class="wrap">
        <h1></h1>
        <form method="post" action="/zh-tw/options.php/" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、安全随机数和设置组
            settings_fields('mfp_plugin_settings');
            do_settings_sections('my-first-plugin');
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="zh-tw"/></form>
    </div>
    &lt;?php
}

最後,更新之前附加文字的函式,使其使用可配置的選項。

function mfp_append_text_to_content($content) {
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        // 从选项中获取自定义消息,如果不存在则使用默认值
        $custom_text = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
        if (!empty($custom_text)) {
            $content .= '<p><em>' . wp_kses_post($custom_text) . '</em></p>';
        }
    }
    return $content;
}

外掛國際化與釋出準備

為了讓外掛能被全世界的使用者使用,國際化是重要的一步。這涉及到使用文字域和翻譯函式包裝所有使用者可見的字串。

InterServer 共享主机
虚拟主机的月费为1TB+5TB,价格为2.50美元。首月优惠价为1TB+5TB,价格为0.1美元。优惠码为"tryinterserver"。平台提供461个云应用脚本,一键安装便捷。

使用翻譯函式包裝文字

你需要將所有在外掛中輸出的字串(如 echo 或 `` 返回的文字)用特定的翻譯函式包裹。最常用的是 () 用於翻譯並返回字串,以及 esc_html__() 用於翻譯並轉義HTML。

修改之前的程式碼示例:

// 在管理菜单中添加一个顶级菜单(国际化版本)
function mfp_add_admin_menu() {
    add_menu_page(
        __('我的第一个插件设置', 'my-first-plugin'), // 页面标题
        __('我的插件', 'my-first-plugin'),           // 菜单标题
        'manage_options',
        'my-first-plugin',
        'mfp_settings_page',
        'dashicons-admin-generic',
        6
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 区域描述回调函数(国际化版本)
function mfp_section_callback() {
    echo '<p>' . esc_html__('在这里配置插件在文章末尾显示的消息。', 'my-first-plugin') . '</p>';
}

同時,需要載入文字域。在外掛主檔案的註釋塊後,新增載入翻譯檔案的程式碼:

// 加载插件文本域
function mfp_load_textdomain() {
    load_plugin_textdomain('my-first-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'mfp_load_textdomain');

準備外掛壓縮包

在釋出或分享外掛之前,你需要建立一個乾淨的釋出包。確保你的外掛目錄包含所有必要的檔案,並排除像 .git 資料夾、日誌檔案或 IDE 配置檔案等無關內容。通常,一個最小的外掛釋出包應包含:
1. 主外掛 PHP 檔案。
2. 一個可選的 readme.txt 檔案,遵循 WordPress.org 的格式標準,用於在外掛目錄中展示。
3. 一個包含翻譯檔案的 /languages 資料夾(如果有的話)。
4. 其他必需的 JavaScript、CSS 或圖片資原始檔夾。

將整個外掛資料夾壓縮成 ZIP 檔案,這個檔案就可以透過 WordPress 後臺的“上傳外掛”功能進行安裝,或者提交到 WordPress 官方外掛目錄。

总结

透過本篇指南,我們走完了 WordPress 外掛開發的核心流程:從環境準備、建立帶有標準外掛頭的主檔案,到利用動作和過濾器鉤子新增功能,再到使用設定 API 建立可配置的選項頁面,最後介紹了國際化的基礎知識。這為你構建更復雜、更實用的外掛奠定了堅實的基礎。記住,良好的程式碼結構、遵循 WordPress 編碼標準以及深入理解其鉤子系統,是成為一名優秀外掛開發者的關鍵。

常见问题解答(FAQ)

開發 WordPress 外掛需要什麼程式設計基礎?

你需要具備 PHP 程式設計的基礎知識,因為 WordPress 核心及其外掛主要是用 PHP 編寫的。同時,對 HTML、CSS 和 JavaScript 有基本瞭解也會非常有幫助,特別是當你需要自定義管理介面或前端互動時。理解 WordPress 的基本概念,如文章、頁面、分類法和鉤子,也是必不可少的。

外掛的主檔案必須叫什麼名字?

沒有強制要求。主檔案可以是任何有效的 PHP 檔名,但通常建議使用與外掛目錄名一致的名稱,例如若目錄名為 my-super-plugin,則主檔案可以命名為 my-super-plugin.php。關鍵在於檔案頂部的外掛頭註釋,WordPress 透過註釋中的 Plugin Name: 來識別外掛。

如何除錯我的外掛程式碼?

有多種方法可以除錯外掛。首先,確保在你的 wp-config.php 檔案中開啟 WordPress 除錯模式,將 WP_DEBUG 常量被设置为 true。這將在頁面上顯示 PHP 錯誤、警告和通知。此外,可以使用 error_log() 函式將除錯資訊寫入伺服器的錯誤日誌,或者使用更高階的除錯工具如 Query Monitor 外掛,它可以提供資料庫查詢、鉤子、PHP 錯誤等詳細資訊。

我開發的外掛如何釋出到 WordPress 官方目錄?

要將外掛釋出到 WordPress.org 官方外掛目錄,你需要先在 WordPress.org 上註冊一個賬號,然後提交你的外掛進行審查。你的外掛程式碼必須遵循 GNU GPL 許可證,並且包含一個格式正確的 readme.txt 檔案。審查團隊會檢查程式碼質量、安全性和是否符合目錄指南。透過審查後,你就可以獲得一個 SVN 倉庫,用於管理和更新你的外掛版本。