踏上 WordPress 插件開發之旅,就代表你已經掌握咗為全球用戶製作插件嘅藝術。

3分鐘閱讀
2026-03-11
2026-06-04
1,972
當你透過以下連結購物,我會獲得佣金,對你嚟講冇額外成本。.

踏上 WordPress 插件開發之旅,意味住你掌握咗為全球數百萬網站添加新功能、自動化流程同創造獨特價值嘅能力。無論係為咗解決特定業務需求,定係為咗分享畀社區,理解其核心架構同原理係成功嘅第一步。插件本質上係 PHP 代碼嘅集合,佢遵循 WordPress 嘅約定同 API,無縫集成到核心系統中,透過掛鉤(Hooks)同過濾器(Filters)嚟改變或增強平台嘅行為。

搭建開發環境與創建基礎插件

喺你開始編寫第一行程式碼之前,一個隔離且專業嘅開發環境至關重要。推薦使用本地開發工具例如 Local by Flywheel、DevKinsta 或者 MAMP,佢哋可以快速配置包含 PHP、MySQL 同 WordPress 嘅環境。

創建第一個插件檔案

一切始於一個 PHP 檔案。喺 WordPress 嘅 wp-content/plugins 喺目錄入面,為你嘅新插件開一個新嘅資料夾。例如,我哋開一個叫做 my-first-plugin 嘅資料夾。然後,喺呢個資料夾入面開個主檔案,通常同資料夾同名:my-first-plugin.php

推薦閱讀 從零到一:WordPress插件開發完整指南與實戰教程

呢個主檔案嘅頭部註解就係插件嘅「身份證」,佢為 WordPress 提供識別插件所需嘅所有元資料。以下係基本結構:

UltaHost WordPress 主機
30日退款保證,無限頻寬同數據庫,免費DDoS防護,買3年優惠50%
<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习 WordPress 插件开发的示例插件。
 * Version:           1.0.0
 * Author:            Your Name
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

保存檔案之後,登入你嘅 WordPress 後台,去「插件」頁面,你應該會見到一個叫做「我嘅第一個插件」嘅新插件。雖然佢而家仲未有乜嘢功能,但你可以啟動同停用佢。呢個就代表你已經成功建立咗插件嘅框架喇。

理解核心概念:動作鈎子同過濾器

WordPress 插件開發嘅核心係鈎子機制。鈎子容許你嘅代碼喺特定時間點「掛入」WordPress 嘅核心流程,執行你嘅邏輯。

動作掛鈎

動作鈎子(Action Hooks)喺特定事件發生時執行代碼,例如發佈文章、用戶登入或者載入模板。你使用 add_action() 函數將你嘅回調函數綁定到鈎子上面。

例如,我哋想喺管理後台嘅文章編輯頁面頂部顯示一條自訂訊息。我哋可以用 edit_form_top 呢個動作鈎子。

推薦閱讀 點樣揀同開發高質素WordPress插件:由入門到精通指南

// 在文章编辑页面顶部添加自定义提示
add_action( 'edit_form_top', 'myplugin_edit_form_top_message' );
function myplugin_edit_form_top_message( $post ) {
    if ( 'post' === $post-&gt;post_type ) {
        echo '<div class="notice notice-info"><p>呢條係來自「我嘅第一個插件」嘅自訂提示!</p></div>';
    }
}

過濾器掛鈎

過濾器掛鈎(Filter Hooks)就用嚟修改數據。佢哋喺數據被使用(例如儲存到數據庫、顯示喺瀏覽器)之前,容許你修改佢嘅數值。你用 add_filter() 函數。

一個經典例子係修改文章內容嘅結尾文字。我哋可以用 the_content 過濾器。

// 在文章内容末尾附加版权信息
add_filter( 'the_content', 'myplugin_add_copyright_to_content' );
function myplugin_add_copyright_to_content( $content ) {
    if ( is_single() ) {
        $content .= '<p><small>© 2026 版權所有。本文由我嘅插件優化。</small></p>';
    }
    return $content;
}

創建插件管理頁面同埋選項

為咗等用戶可以設定你個插件,你需要為佢整一個設定頁面。WordPress 提供咗好多 API 嚟幫你喺管理選單度加頁面同處理選項。

hosting.com 共享主機
高效能,配備 AMD EPYC 處理器、NVMe SSD 儲存同 LiteSpeed,提供全天候專業內部支援,採用先進安全措施,包括 SSL、暴力破解、惡意軟件同 DDoS 防護,可節省高達 73%。

添加管理菜單

使用 add_menu_page()add_options_page() 用函數可以幫你個插件加一個頂層或者子層選單。通常,簡單嘅插件會加喺「設定」選單下面做一個子頁面。

首先,我哋需要喺管理員初始化嘅時候掛鈎一個函數嚟註冊選單。

// 在管理后台添加设置菜单
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',      // 所需权限
        'myplugin-settings',   // 菜单别名 (slug)
        'myplugin_render_settings_page' // 用于输出页面内容的回调函数
    );
}

渲染設定頁面同埋儲存選項

跟住,我哋要定義 myplugin_render_settings_page 函數嚟生成頁面嘅 HTML 表單,同埋處理表單數據嘅保存。我哋會用 WordPress 嘅設定 API(Settings API)嚟安全地註冊、驗證同埋保存選項。

推薦閱讀 點樣揀同開發高質素WordPress插件:由入門到精通

// 渲染设置页面
function myplugin_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>我嘅插件設定</h1>
        <form action="/yue/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出必要的安全字段和隐藏字段
            settings_fields( 'myplugin_settings_group' );
            // 输出设置章节和字段
            do_settings_sections( 'myplugin-settings' );
            // 输出提交按钮
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="yue"/></form>
    </div>
    <?php
}

// 初始化设置
add_action( 'admin_init', 'myplugin_settings_init' );
function myplugin_settings_init() {
    // 注册一个设置组和字段
    register_setting(
        'myplugin_settings_group', // 设置组名
        'myplugin_option_message'  // 选项名,将保存在 wp_options 表中
    );

    // 添加一个设置章节
    add_settings_section(
        'myplugin_section_basic',
        '基础设置',
        null, // 章节描述回调函数,可以为空
        'myplugin-settings' // 页面别名
    );

    // 向章节添加一个字段
    add_settings_field(
        'myplugin_field_message',
        '自定义消息',
        'myplugin_field_message_render', // 渲染字段 HTML 的函数
        'myplugin-settings',
        'myplugin_section_basic'
    );
}

// 渲染 ‘自定义消息’ 字段
function myplugin_field_message_render() {
    $option = get_option( 'myplugin_option_message' );
    ?>
    <input type='text' name='myplugin_option_message' value='<?php echo esc_attr( $option ); ?>'>
    <p class="description">喺呢度輸入嘅訊息會喺前台顯示。</p>
    &lt;?php
}

而家,你可以喺「設定」->「我嘅插件」度見到一個包含文字輸入框嘅設定頁面,同埋可以保存訊息。要用呢個選項,你可以喺前台透過 get_option( 'myplugin_option_message' ) 攞到佢嘅數值。

實現自訂短代碼

短代碼(Shortcode)容許用戶透過簡單嘅方括號標籤(例如 [my_shortcode])喺文章、頁面或者小工具入面嵌入動態內容。呢個係插件提供複雜功能嘅用戶友好方式。

InterServer 共享主機
共享主機:每月1TB,只需£2.50;首月只需£0.10,使用優惠碼 tryinterserver。461個雲端應用程式腳本,一鍵安裝。

註冊短代碼

使用 add_shortcode() 函數嚟註冊你嘅短代碼。佢接受兩個參數:短代碼標籤同處理函數。

例如,我哋創建短代碼 [display_greeting],佢可以根據時間顯示唔同嘅問候語,並可以選擇性接受一個 name 參數。

// 注册自定义短代码
add_shortcode( 'display_greeting', 'myplugin_render_greeting_shortcode' );
function myplugin_render_greeting_shortcode( $atts ) {
    // 设置默认属性值
    $attributes = shortcode_atts(
        array(
            'name' =&gt; '访客',
        ),
        $atts,
        'display_greeting'
    );

    // 获取当前小时
    $hour = date( 'H' );
    $greeting = '';

    if ( $hour &lt; 12 ) {
        $greeting = &#039;早上好&#039;;
    } elseif ( $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

    // 构建输出
    $output = sprintf(
        &#039;<div class="myplugin-greeting"><p><strong>一對二,一對二!</strong> 歡迎嚟到呢個網站。</p></div>',
        esc_html( $greeting ),
        esc_html( $attributes['name'] )
    );

    return $output;
}

用戶而家可以喺編輯器輸入 [display_greeting name="张三"],頁面渲染時會俾一段個人化問候取代。

摘要

WordPress 插件開發係一個強大而靈活嘅過程,精髓在於理解同運用掛鉤系統同核心 API。由創建一個帶有標準標頭嘅 PHP 檔案開始,透過動作同過濾器掛鉤嚟擴展功能,利用設定 API 創建用戶友好嘅配置介面,再到提供方便嘅簡碼,你已經構建咗一個具備基本結構同常用功能模組嘅插件。將呢啲基礎模組組合、深化,並遵循 WordPress 編碼標準同安全性最佳實踐,你將能夠創造出滿足各種需求嘅強大插件。

常見問題

開發 WordPress 插件需要啲乜嘢基本知識?

你需要具備 PHP 編程語言嘅基礎知識,因為插件主要係用 PHP 編寫嘅。同時,對 HTML、CSS 同 JavaScript 有基本了解會對創建用戶介面同互動功能有幫助。最重要係,熟悉 WordPress 嘅核心概念,例如掛鉤(Hooks)、循環(The Loop)同模板層次結構。

點樣調試緊喺度開發嘅 WordPress 插件?

建議喺本地開發環境中開啟 WordPress 除錯模式。喺 wp-config.php 檔案入面,將 WP_DEBUG 常數設定為 true。你仲可以安裝查詢監控插件(例如 Query Monitor)嚟追蹤數據庫查詢、掛鈎執行同埋腳本加載,呢啲對於性能優化同邏輯檢查都好有幫助。

我嘅插件點樣實現國際化支援?

WordPress 使用 GNU gettext 框架嚟做國際化。喺你插件主文件嘅頭部定義 Text Domain 同埋 Domain Path。喺程式碼入面,使用 __()_e() 等函數包裹所有需要翻譯嘅字串。然後,使用 Poedit 等工具生成 .pot 範本檔案,俾翻譯人員創建 .po 同埋 .mo 檔案。

點樣可以安全咁將我嘅插件提交到 WordPress 官方插件目錄?

首先,你需要喺 WordPress.org 上開一個帳號同提交插件。你嘅程式碼必須跟從 WordPress 編碼標準,而且唔可以包含任何加密或者混淆嘅程式碼。插件目錄、主檔案、截圖同 README 都需要跟從特定嘅結構。審核團隊會檢查程式碼質量、安全性同許可協議(必須係 GPL 兼容)。