WordPress外掛開發入門指南:從零構建您的第一個功能擴充套件

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

準備工作:理解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;
    }
    ?>
    <div class="wrap">
        <h1></h1>
        <p>欢迎来到“我的第一个插件”的设置页面。这是一个简单的管理界面示例。</p>
        <form action="/zh-tw/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 未来可以在这里添加设置字段
            ?>
            <p>更多高级功能(如保存设置)将在后续教程中介绍。</p>
        <input type="hidden" name="trp-form-language" value="zh-tw"/></form>
    </div>
    &lt;?php
}

儲存後重新整理後臺,您將在左側看到一個新的“我的外掛”選單項,點選即可進入我們剛剛建立的空設定頁面。

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

建立並註冊一個短程式碼

短程式碼允許使用者透過簡單的[shortcode]標籤在文章或頁面中插入動態內容。我們來建立一個顯示當前伺服器時間的短程式碼。

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

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

// 返回输出内容
    return '<div class="myfp-time"><strong>当前时间:</strong> ' . esc_html( $current_time ) . '</div>';
}
// 注册短代码 [current_time]
add_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外掛。

常见问题解答(FAQ)

一個外掛必須包含多少個檔案?

一個外掛可以只包含一個主PHP檔案。對於簡單外掛,這完全足夠。當外掛功能變得複雜時,為了程式碼清晰和可維護性,建議將不同的功能模組拆分到不同的檔案中(如CSS、JavaScript、類定義檔案等),並透過主檔案進行組織載入。

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

為什麼我的外掛在後臺列表中沒有出現?

這通常是由於外掛頭部註釋格式不正確或檔案路徑錯誤導致的。請確保您的外掛主PHP檔案直接位於/wp-content/plugins/your-plugin-folder/目錄下,並且檔案頂部的註釋塊格式完全正確,特別是Plugin Name:這一行必不可少。檢查無誤後,重新整理外掛頁面即可。

動作鉤子和過濾器鉤子有什麼區別?

動作鉤子用於在特定時刻“執行某段程式碼”,它不要求返回值,主要用於觸發附加功能,如新增HTML、傳送郵件。過濾器鉤子用於“修改某個資料”,它必須返回一個值(通常是修改後的輸入值),主要用於在內容輸出前進行干預,如修改文章標題、為內容新增連結。

如何安全地移除已新增的鉤子?

您可以使用remove_action()或者remove_filter()函式來移除之前新增的鉤子。但必須確保移除操作發生在原新增操作之後,並且優先順序引數需與原add_action()或者add_filter()中的優先順序一致。通常建議在外掛停用鉤子或特定條件下執行移除操作。