WordPress插件開發入門指南:從零建立你嘅第一個功能擴展

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

準備功夫:理解WordPress插件基礎

喺開始寫程式碼之前,建立一個紮實嘅理論基礎至關重要。一個WordPress插件本質上係一個或多個PHP檔案嘅集合,佢透過WordPress提供嘅Hook(钩子)系統嚟擴展或修改WordPress核心功能。插件可以細到只係加一個短代碼,大到可以創建一個完整嘅管理後台應用。所有插件都存放喺/wp-content/plugins/喺目錄入面,每個插件都有自己獨立嘅文件夾。

開發環境就係你嘅工作枱。你需要一個本地伺服器環境,例如XAMPP、MAMP或者Local by Flywheel,同埋裝好WordPress。強烈建議喺wp-config.php檔案中開啟WP_DEBUG模式,呢個會幫你喺開發過程中快啲搵到錯誤。另外,一個順手嘅代碼編輯器(好似VS Code、PhpStorm咁)同一個現代瀏覽器(跟埋開發者工具)都係必不可少嘅。

創建第一個插件:基礎結構同啟動

等我哋由創建一個最簡單嘅插件開始,佢嘅功能係喺網站所有頁面嘅底部加返一行版權資訊。呢個過程會帶你了解插件嘅基本構成部分。

推薦閱讀 WordPress插件開發入門指南:從零開始構建你嘅第一個功能擴展

首先,喺/wp-content/plugins/目錄下開一個新嘅資料夾,命名為my-first-plugin。喺嗰個文件夾入面,創建主插件文件,通常同文件夾同名:my-first-plugin.php。每個插件都必須有一個標準嘅插件頭部註釋,呢個係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:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

保存檔案之後,登入您嘅WordPress管理後台,進入「插件」頁面,您會見到一個名為「我嘅第一個插件」嘅插件出現喺列表度。點擊「啟用」,您嘅插件就正式激活喇,雖然佢暫時仲未會做任何嘢。

實現核心功能:用鉤子添加內容

WordPress嘅強大之處在於佢嘅Hook(钩子)系統,分為Action(动作)同埋Filter(过滤器)兩種。動作鈎子容許您喺特定嘅時間點(例如頁面載入完畢、文章發佈時)插入您自己嘅代碼嚟執行功能。過濾器鈎子就容許您修改喺流程中傳遞嘅數據(例如文章內容、標題)。

為咗喺頁尾加文字,我哋需要用wp_footer呢個動作鈎子。我哋喺主插件檔案入面加以下代碼:

// 这是一个安全措施,防止直接访问PHP文件
if ( ! defined( 'ABSPATH' ) ) {
    exit; // 如果ABSPATH未定义,则退出
}

/**
 * 在网站页脚输出自定义HTML内容
 */
function myfp_add_footer_text() {
    echo '<div style="text-align: center; padding: 20px; border-top: 1px solid #eee; margin-top: 40px;">';
    echo '<p>© ' . date('Y') . ' 我嘅網站。保留所有權利。本內容由<strong>我嘅第一個插件</strong>生成。</p>';
    echo '</div>';
}
// 将我们的函数挂载到 `wp_footer` 动作钩子上
add_action( 'wp_footer', 'myfp_add_footer_text' );

喺呢段程式碼入面,我哋首先定義咗個函數myfp_add_footer_text(),佢嘅功能係輸出一段HTML代碼。跟住,我哋用add_action()函數將呢個自訂函數「掛載」到wp_footer呢個鈎上面。即係話每當WordPress執行到wp_footer當位置時(通常位於主題嘅footer.php檔案入面),就會自動調用我哋嘅函數,從而喺頁面底部顯示我哋定義嘅版權資訊。

推薦閱讀 從零開始:WordPress插件開發完整指南與最佳實踐分享

進階功能:創建管理頁面同短代碼

一個功能完善嘅插件通常需要同管理員互動。跟住落嚟,我哋為插件添加一個簡單嘅設定頁面,並創建一個短代碼。

喺管理選單度加個設定頁面

我哋會用add_menu_page()個函數會喺WordPress後台左邊選單加個新項目。改主插件檔案,加以下代碼:

/**
 * 注册插件管理菜单
 */
function myfp_add_admin_menu() {
    add_menu_page(
        '我的第一个插件设置', // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',     // 所需权限
        'myfp-settings',      // 菜单slug
        'myfp_settings_page', // 显示页面内容的回调函数
        'dashicons-admin-plugins', // 图标(使用Dashicon)
        30                    // 菜单位置
    );
}
add_action( 'admin_menu', 'myfp_add_admin_menu' );

/**
 * 设置页面的HTML内容
 */
function myfp_settings_page() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <p>歡迎嚟到「我嘅第一個插件」嘅設定頁面。呢個係一個簡單嘅管理介面示例。</p>
        <form action="/yue/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 未来可以在这里添加设置字段
            ?>
            <p>更多高級功能(例如儲存設定)將會喺之後嘅教程入面介紹到。</p>
        <input type="hidden" name="trp-form-language" value="yue"/></form>
    </div>
    &lt;?php
}

儲存之後重新整理後台,你就會喺左邊見到個新嘅「我嘅插件」選單項目,撳落去就會入到我哋啱啱整好嘅空白設定頁面。

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

整同註冊一個短代碼

短代碼容許用戶透過簡單嘅[shortcode]標籤喺文章或頁面度插入動態內容。我哋嚟整一個顯示當前伺服器時間嘅短代碼。

/**
 * 短代码处理函数
 * @param array $atts 短代码属性
 * @param string $content 短代码包裹的内容
 * @return string 返回要替换的HTML
 */
function myfp_current_time_shortcode( $atts = [], $content = null ) {
    // 设置默认属性并合并用户传入的属性
    $atts = shortcode_atts(
        array(
            'format' =&gt; 'Y-m-d H:i:s',
        ),
        $atts,
        'current_time'
    );

// 根据format属性格式化当前时间
    $current_time = date( $atts['format'] );

// 返回输出内容
    return '<div class="myfp-time"><strong>而家時間:</strong> ' . esc_html( $而家時間 ) . '</div>';\n}\n// 註冊短代碼 [current_time]\nadd_shortcode( 'current_time', 'myfp_current_time_shortcode' );

而家,你可以喺任何文章、頁面或者小工具文字框度輸入[current_time]嚟顯示預設格式嘅時間,或者用[current_time format="F j, Y"]用嚟顯示自訂格式嘅時間。WordPress會自動調用我哋myfp_current_time_shortcode()嘅函數嚟處理同替換呢個短代碼。

摘要

透過呢個指南,你已經完成咗由零開始建立一個功能齊全嘅WordPress插件嘅關鍵步驟。你了解咗插件嘅基本結構、頭部註解嘅重要性,同埋實踐咗WordPress開發嘅核心——掛鈎系統。你成功咁用add_action()向網站前台加咗內容,用add_menu_page()創建咗管理後台介面,並用add_shortcode()註冊咗可供內容編輯器使用嘅短代碼。

推薦閱讀 WordPress插件開發入門指南

呢個只係插件開發世界嘅起點。從呢度出發,你可以探索更複雜嘅領域,例如:創建數據庫表來儲存數據、用add_settings_section()同埋add_settings_field()構建真正嘅選項頁面、處理表單提交、添加AJAX互動、構建自訂文章類型同分類法,以及遵循WordPress編碼標準同安全最佳實踐來發佈你嘅插件。繼續實踐同探索,你將能夠開發出強大而專業嘅WordPress插件。

常見問題

一個插件必須包含幾多個檔案?

一個插件可以只包含一個主PHP檔案。對於簡單插件,呢個完全足夠。當插件功能變得複雜時,為咗代碼清晰同可維護性,建議將唔同功能模組拆分到唔同檔案入面(例如CSS、JavaScript、類定義檔案等等),並透過主檔案進行組織加載。

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

點解我嘅插件喺後台列表度冇出現?

呢個通常係由於插件頭部註釋格式唔正確或者檔案路徑錯誤導致嘅。請確保你嘅插件主PHP檔案直接喺/wp-content/plugins/your-plugin-folder/目錄入面,而且檔案頂部嘅註釋塊格式完全正確,尤其係Plugin Name:呢一行必不可少。檢查無誤之後,重新整理插件頁面就得。

動作鈎同過濾器鈎有咩分別?

動作鉤用喺特定時刻「執行某段代碼」,佢唔要求返回值,主要用嚟觸發附加功能,例如加HTML、寄電郵。過濾器鉤用嚟「修改某個數據」,佢必須要返回一個值(通常係修改後嘅輸入值),主要用喺內容輸出前進行干預,例如改文章標題、為內容加連結。

點樣安全噉移除已加嘅鉤?

你可以用remove_action()remove_filter()函數嚟移除之前加嘅鉤。但係要確保移除操作發生喺原添加操作之後,而且優先級參數要同原add_action()add_filter()入面嘅優先級係一致嘅。通常建議喺插件停用勾子或者特定條件下執行移除動作。