面向WordPress插件开发新手的入门指南:从零开始构建你的第一个功能性插件

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

WordPress外掛開發基礎知識

在開始編寫程式碼之前,瞭解WordPress外掛的基本概念至關重要。一個WordPress外掛本質上是一個或多個PHP檔案的集合,它透過WordPress提供的各種API以及Hook來擴充套件或修改WordPress的核心功能。外掛可以小到只是新增一個簡碼,大到可以構建一個完整的電子商務平臺。所有外掛都存放在/wp-content/plugins/目錄下,每個外掛擁有自己獨立的資料夾。

開發外掛的核心在於理解WordPress的动作钩子以及过滤器钩子动作钩子允許你在特定的時間點(如頁面載入時、釋出文章時)執行自定義的PHP程式碼,而过滤器钩子則允許你修改WordPress在執行過程中產生的各種資料(如文章內容、標題、摘錄)。熟練掌握這些鉤子的使用是外掛開發的關鍵。

為了外掛能夠被WordPress識別,每個外掛都必須包含一個標準的外掛頭部註釋。這個註釋塊通常位於外掛主PHP檔案的開頭,它向WordPress提供了外掛的基本資訊,如名稱、描述、版本、作者等。沒有這個頭部,外掛將不會出現在後臺的外掛列表中。

推荐阅读 深入理解WordPress外掛開發:從零基礎到構建專業擴充套件

创建你的第一个外挂插件

我們將從建立一個最簡單的“Hello World”外掛開始。這個外掛將在 WordPress 管理後臺的儀表盤頂部顯示一條自定義的歡迎資訊。

UltaHost WordPress 主機
30天退款保證,無限頻寬與資料庫,免費的 DDoS 防護,購買3年優惠50%

初始化外掛目錄和主檔案

首先,你需要在本地開發環境或測試站點的 /wp-content/plugins/ 目錄下建立一個新資料夾。我們將其命名為 my-first-plugin。然後,在該資料夾內建立一個主 PHP 檔案,通常我們會用外掛名來命名它,這裡我們建立 my-first-plugin.php

关于 my-first-plugin.php 檔案的開頭,必須新增外掛頭部資訊。這是外掛的“身份證”。

編寫外掛頭部資訊與核心函式

檔案建立好後,開啟它並輸入以下程式碼:

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个用于学习插件开发的入门示例,会在仪表盘显示欢迎信息。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

這段註釋定義了外掛的基本資訊。儲存檔案後,登入你的 WordPress 後臺,進入“外掛”頁面,你應該能看到名為“我的第一個外掛”的新外掛。現在啟用它,它還沒有任何功能。

推荐阅读 完整的WordPress插件开发指南:从零到一构建自己的插件

接下來,我們為它新增第一個功能。我們將使用 add_action() 函式將一個自定義函式掛載到 WordPress 的動作鉤子上。在頭部註釋下方,新增以下程式碼:

// 在仪表盘顶部添加欢迎信息
function my_first_plugin_admin_notice() {
    echo '<div class="notice notice-success is-dismissible"><p>欢迎使用“我的第一个插件”!这是一个成功的开始。</p></div>&lt;?php
}
add_action( &#039;admin_notices&#039;, &#039;my_first_plugin_admin_notice&#039; );

這裡,我們建立了一個名為 my_first_plugin_admin_notice 的函式,它的作用是輸出一段 HTML 程式碼,用於顯示一個 WordPress 後臺風格的通知。然後,我們使用 add_action( ‘admin_notices’, ‘my_first_plugin_admin_notice’ ) 將這個函式掛載到 admin_notices 這個動作鉤子上。這意味著每當 WordPress 在後臺準備顯示管理通知時,都會執行我們的函式。

儲存檔案後,重新整理 WordPress 後臺的任意頁面,你會在頁面頂部看到一個綠色的成功提示框。恭喜,你的第一個功能外掛已經成功運行了!

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

為外掛新增設定頁面

一個完整的外掛通常需要為使用者提供配置選項。我們將為“我的第一個外掛”新增一個簡單的設定頁面,允許使用者自定義顯示在歡迎資訊中的文字。

建立管理選單項

首先,我們需要在 WordPress 後臺的管理側邊欄中新增一個選單項。這需要使用 add_action() 函式掛載到 admin_menu 鉤子。在外掛主檔案中繼續新增以下程式碼:

// 添加插件设置页面到后台菜单
function my_first_plugin_add_menu() {
    add_menu_page(
        ‘我的第一个插件设置’, // 页面标题
        ‘第一个插件’,         // 菜单标题
        ‘manage_options’,     // 权限 (manage_options 表示管理员权限)
        ‘my-first-plugin-settings’, // 菜单 slug
        ‘my_first_plugin_settings_page’, // 用于显示页面内容的回调函数
        ‘dashicons-smiley’,   // 菜单图标 (Dashicons)
        100                    // 菜单位置
    );
}
add_action( ‘admin_menu’, ‘my_first_plugin_add_menu’ );

add_menu_page() 函式是 WordPress 核心函式,用於在後臺新增頂級選單。我們定義了頁面的標題、選單上顯示的文字、訪問許可權(這裡設定為只有管理員可訪問 manage_options)、唯一的slug、以及用於輸出頁面內容的回撥函式名 my_first_plugin_settings_page

推荐阅读 云主机入门指南:从零开始掌握云端服务器部署与管理技巧

構建設定頁面表單

接下來,我們需要定義 my_first_plugin_settings_page 函式來渲染設定頁面的 HTML 內容,並處理表單的儲存邏輯。這個函式將建立一個簡單的表單,其資料會透過 WordPress 的 options API 進行儲存和讀取。

// 设置页面的内容
function my_first_plugin_settings_page() {
    // 检查用户权限
    if ( !current_user_can( ‘manage_options’ ) ) {
        wp_die( __( ‘你没有权限访问此页面。’ ) );
    }

// 保存表单数据
    if ( isset( $_POST[‘my_first_plugin_message’] ) ) {
        update_option( ‘my_first_plugin_custom_message’, sanitize_text_field( $_POST[‘my_first_plugin_message’] ) );
        echo ‘<div class="“notice" notice-success is-dismissible”><p>设置已保存!</p></div>’;
    }

// 获取已保存的消息
    $saved_message = get_option( ‘my_first_plugin_custom_message’, ‘这是一个通过设置页面定制的欢迎消息!’ );

// 输出表单 HTML
    ?>
    <div class="“wrap”">
        <h1>我的第一个插件设置</h1>
        <form method="“post”" action="/zh-tw/“”/" data-trp-original-action="“”">
            <table class="“form-table”">
                <tr>
                    <th scope="“row”"><label for="“custom_message”">自定义欢迎消息</label></th>
                    <td>
                        <input type="“text”" id="“custom_message”" name="“my_first_plugin_message”" value="”NO NUMERIC NOISE KEY" 1001” class="“regular-text”" />
                        <p class="“description”">输入你想在仪表盘通知中显示的文字。</p>
                    </td>
                </tr>
            </table>
            <?php submit_button( ‘保存更改’ ); ?>
        <input type="hidden" name="trp-form-language" value="zh-tw"/></form>
    </div>
    &lt;?php
}

在這個函式中,我們首先檢查使用者許可權。然後,我們檢查是否有 POST 請求提交(即使用者點選了儲存按鈕)。如果有,我們使用 update_option() 函式將表單中的訊息儲存到 WordPress 的 options 資料庫表中,並使用 sanitize_text_field() 進行安全過濾。接著,我們使用 get_option() 讀取之前儲存的值,如果不存在則使用預設值。最後,我們輸出一個包含輸入框的 HTML 表單。

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

修改通知函式以使用自定義訊息

最後,我們需要修改之前建立的 my_first_plugin_admin_notice 函式,讓它從我們儲存的選項中讀取訊息,而不是顯示固定的文字。

// 修改后的通知函数
function my_first_plugin_admin_notice() {
    // 从数据库获取自定义消息
    $custom_message = get_option( ‘my_first_plugin_custom_message’, ‘欢迎使用“我的第一个插件”!这是一个成功的开始。’ );
    echo ‘<div class="“notice" notice-success is-dismissible”><p>’ . esc_html( $custom_message ) . ‘</p></div>’;
}

現在,啟用外掛,你會在後臺側邊欄看到“第一個外掛”選單。點選進入,修改訊息並儲存。重新整理其他後臺頁面,你會發現頂部的通知訊息已經變成了你自定義的內容。至此,一個具備基本增刪改查功能的小外掛就完成了。

外掛開發最佳實踐與進階技巧

開發一個可維護、安全且相容性好的外掛,需要遵循一些最佳實踐。

確保程式碼安全與資料淨化

安全性是外掛開發的第一要務。永遠不要信任使用者輸入或來自外部資料來源的資料。WordPress 提供了豐富的函式來幫助你淨化、轉義和驗證資料。
* 淨化輸入:使用函式如 sanitize_text_field()sanitize_email()sanitize_url() 來處理表單提交的資料。
* 轉義輸出:在將任何資料輸出到 HTML、JavaScript 或 URL 時,必須進行轉義。使用 esc_html()esc_attr()esc_url() 以及 wp_kses_post() 等函式。
* 許可權檢查:在進行任何管理操作之前,務必使用 current_user_can() 檢查當前使用者是否有相應許可權,例如 current_user_can( ‘manage_options’ )
* Nonce驗證:對於涉及資料更改的操作(如表單提交、AJAX請求),使用 wp_nonce_field()wp_verify_nonce() 來防止跨站請求偽造攻擊。我們可以改進之前的設定頁面表單,加入 nonce 驗證以提高安全性。

實現外掛國際化

為了讓你的外掛可以被全球使用者使用,國際化是必不可少的步驟。這需要你為所有面向用戶的文字字串做好翻譯準備。
1. 使用文字域:在外掛頭部註釋中定義 Text Domain(例如 my-first-plugin),並在所有需要翻譯的字串中使用 __(‘文本’, ‘my-first-plugin’) 或者 _e(‘文本’, ‘my-first-plugin’) 函式包裹。
2. 生成翻譯檔案:使用工具如 Poedit 掃描外掛內所有可翻譯字串,生成 .pot 模板檔案,然後翻譯成各種語言的 .po 以及 .mo 文件。
3. 載入文字域:在外掛初始化時,使用 load_plugin_textdomain() 函式載入你的翻譯檔案。

管理外掛生命週期

一個專業的外掛應該妥善處理啟用、停用和解除安裝事件。你可以透過建立相應的鉤子函式來實現。
* 啟用鉤子:使用 register_activation_hook() 來註冊一個函式,在外掛啟用時執行。通常用於建立資料庫表、初始化預設選項或檢查環境相容性。
* 停用鉤子:使用 register_deactivation_hook()。通常用於清理臨時資料或停止計劃任務。
* 解除安裝鉤子:使用 register_uninstall_hook()。注意:這個鉤子用於在使用者從 WordPress 中完全刪除外掛時執行,用於清理外掛建立的所有資料庫選項、自定義表和檔案。操作需謹慎,並應明確告知使用者。

总结

本文帶你從零開始,完整地體驗了 WordPress 外掛開發的核心流程。你首先了解了外掛的基礎概念,特別是動作鉤子和過濾器鉤子的核心作用。隨後,你親手建立了一個包含資料夾、主檔案、和標準頭部資訊的外掛框架,並透過 add_action() 函式和 admin_notices 鉤子實現了第一個顯示功能。接著,透過為外掛新增設定頁面,你學習瞭如何使用 add_menu_page() 建立後臺選單,以及如何使用 update_option() 以及 get_option() 進行資料的增刪改查。最後,我們探討了安全編碼、國際化和外掛生命週期管理等專業開發中必須遵循的最佳實踐。遵循這些步驟和原則,你便具備了獨立開發簡單、實用且安全的 WordPress 外掛的能力,並可以在此基礎上不斷探索更復雜的功能。

常见问题解答(FAQ)

開發WordPress外掛需要哪些基礎知識?

你需要掌握 PHP 語言的基礎語法,因為外掛程式碼主要由 PHP 編寫。同時,需要對 HTML、CSS 和基本的 JavaScript 有一定了解,用於構建前端介面和互動。最重要的是,要熟悉 WordPress 的核心架構,特別是其Hook系統(動作和過濾器)、选项API数据库API另外REST API。瞭解 WordPress 的編碼標準和安全性最佳實踐也至關重要。

如何除錯和測試我的外掛?

WordPress 外掛開發有多種除錯方法。首先,在你的 wp-config.php 檔案中開啟 WP_DEBUG 以及 WP_DEBUG_LOG 常量,這會將 PHP 錯誤和警告記錄到 /wp-content/debug.log 檔案中,方便排查問題。其次,對於邏輯複雜的程式碼,可以使用 error_log() 函式將變數值輸出到日誌中。此外,建議在本地開發環境(如 Local by Flywheel, XAMPP)或臨時測試站點上進行開發,避免影響生產網站。使用版本控制系統(如 Git)來管理程式碼變更也是一個好習慣。

我的外掛如何相容不同版本的WordPress?

為了確保外掛的廣泛相容性,在開發時應注意以下幾點:避免使用僅在最新版 WordPress 中才引入的函式,如果必須使用,應使用 function_exists() 進行條件檢查並提供回退方案。在外掛頭部註釋中,透過 Requires at least 以及 Tested up to 欄位明確宣告你支援的 WordPress 版本範圍。定期在最新版 WordPress 上測試你的外掛,並及時更新相容性宣告。遵循 WordPress 官方的編碼標準也能最大程度減少因核心更新帶來的相容性問題。

開發完成後如何分發我的外掛?

分發外掛主要有兩種途徑。第一種是免費釋出到 WordPress 官方的外掛目錄,這能讓你的外掛被全球數百萬使用者發現和下載。你需要訪問 WordPress.org 提交外掛,並確保程式碼符合其規範和稽核標準。第二種是作為商業外掛,透過你自己的網站進行銷售。這種方式下,你需要自行處理銷售、支付、許可驗證和客戶支援。對於商業外掛,通常會使用 OOP(面向物件程式設計)來更好地組織程式碼結構,並可能整合框架來簡化許可管理、更新通知等功能。無論哪種方式,提供清晰的文件和及時的支援都非常重要。