掌握關鍵技巧:由零開始創建你第一個 WordPress 主題

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

開發環境同基礎檔案準備

喺開始寫程式碼之前,搭一個穩定嘅本地開發環境係好緊要嘅。咁樣可以令你喺唔影響線上網站嘅情況下做測試。建議用好似 Local by Flywheel、XAMPP 或者 MAMP 呢啲工具,好快咁建立一個包含 PHP 同 MySQL 嘅本地伺服器環境。

跟住,你需要喺 WordPress 安裝目錄嘅 wp-content/themes 檔案夾入面,為你個主題開一個新嘅檔案夾,例如叫做 my-first-theme。呢個文件夾就係你嘅主題根目錄。然後,你必須創建兩個最基本且必需嘅文件:style.css 同埋 index.php

style.css 文件唔單止係你嘅主題樣式表,更重要嘅係佢包含咗一個用 CSS 註解編寫嘅主題信息頭部(Theme Header)。呢個頭部係 WordPress 識別你主題嘅唯一憑證。

推薦閱讀 從零到一:WordPress主題開發全流程指南與實戰技巧

/*
Theme Name: 我的第一个主题
Theme URI: http://example.com/my-first-theme/
Author: 你的名字
Author URI: http://example.com/
Description: 这是一个从零开始创建的 WordPress 主题示例。
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: my-first-theme
*/

index.php 係你嘅主題嘅主模板文件,亦都係 WordPress 查找模板時嘅最終備用文件。佢至少應該包含 WordPress 核心嘅調用,以輸出頁面頭部、內容循環同頁腳。

UltaHost WordPress 主機
30日退款保證,無限頻寬同數據庫,免費DDoS防護,買3年優惠50%
<!DOCTYPE html>
<html no numeric noise key 1005>
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php wp_head(); ?>
</head>
<body no numeric noise key 1002>
    
</body>
</html>

理解主題嘅模板層級

喺創建其他模板檔案之前,理解 WordPress 嘅模板層級(Template Hierarchy)係核心。佢決定咗 WordPress 為唔同類型嘅頁面(例如首頁、文章頁、頁面、分類頁)揀邊個模板檔案嚟渲染。舉個例,當訪問一篇獨立嘅文章時,WordPress 會跟順序搵:single-post-{slug}.php -> single-post-{id}.php -> single.php -> singular.php -> index.php。掌握呢個規則,你就可以透過創建特定嘅檔案(例如 single.phppage.php)嚟精確控制唔同頁面嘅外觀。

構建主題嘅核心模板

一個完整嘅主題唔應該得一個 index.php。為咗實現更好嘅代碼組織同重用,我哋需要將頁面拆分成多個部分,並透過函數引入。

分離頭部同頁腳

創建 header.php 檔案,用嚟存放 HTML 文檔嘅頭部(DOCTYPE,, <head> 部份,同埋頁面主體嘅開頭部份,例如網站標題同主導航)。相應咁,建立 footer.php 檔案,用嚟擺放頁面底部嘅內容(好似版權資訊)同埋閉合標籤。

之後,喺 index.php 入面,你就可以用 get_header() 同埋 get_footer() 函數嚟引入佢哋,令結構更加清晰。

推薦閱讀 WordPress主題開發初學者完全指南:從零到一構建你嘅第一個主題

創建側邊欄模板

如果主題需要側邊欄,可以創建 sidebar.php 文件,裏面使用 dynamic_sidebar() 函數來調用喺小工具區域註冊嘅側邊欄。喺主模板度,使用 get_sidebar() 函數嚟引入佢。

實現文章循環與內容模板

文章循環係 WordPress 主題嘅心臟,佢用嚟從數據庫度攞同顯示文章。喺 index.phpsingle.php 入面,我哋用標準循環結構。為咗更模組化噉控制文章喺列表(例如首頁、歸檔頁)同單篇文章頁嘅顯示,可以創建 content.php 或者分別創建 content-single.php 同埋 content-excerpt.php

喺循環入面,用 get_template_part() 函數嚟調用呢啲內容模板檔案,例如:get_template_part( 'content', get_post_format() );

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

主題功能同樣式整合

一個好嘅主題唔單止要有外觀,仲要透過功能檔案嚟增強佢嘅能力。

引入主題功能檔案

創建 functions.php 檔案。呢個檔案唔係範本檔案,但係主題嘅「大腦」,用嚟加主題功能、登記菜單、側邊欄,同埋引入腳本同樣式。佢會喺主題初始化嘅時候自動俾 WordPress 載入。

喺呢個檔案入面,你可以用 add_theme_support() 函數嚟啟用主題功能,例如文章縮圖(Featured Image)、自訂標誌(Custom Logo)同埋 HTML5 標記支援。

推薦閱讀 WordPress主題開發從入門到精通:打造個人化網站嘅核心指南

function my_first_theme_setup() {
    // 添加文章和评论的 RSS feed 链接到 head
    add_theme_support( 'automatic-feed-links' );
    // 启用文章缩略图功能
    add_theme_support( 'post-thumbnails' );
    // 注册一个导航菜单位置
    register_nav_menus( array(
        'primary' => __( '主导航菜单', 'my-first-theme' ),
    ) );
}
add_action( 'after_setup_theme', 'my_first_theme_setup' );

註冊小工具區域

functions.php 入面,用 register_sidebar() 函數可以定義一個或多個小工具區域(Widget Areas),容許用戶喺後台「小工具」界面拖放組件。

function my_first_theme_widgets_init() {
    register_sidebar( array(
        'name'          =&gt; __( '主侧边栏', 'my-first-theme' ),
        'id'            =&gt; 'sidebar-1',
        'description'   =&gt; __( '在此添加小工具。', 'my-first-theme' ),
        'before_widget' =&gt; '<section id="%1$s" class="widget %2$s">',
 'after_widget'  =&gt; '</section>',
 'before_title'  =&gt; '<h2 class="widget-title">',
 'after_title'   =&gt; '</h2>',
    ) );
}
add_action( 'widgets_init', 'my_first_theme_widgets_init' );

正確載入樣式同腳本

千祈唔好直接喺模板文件度用 <link><script> 標籤硬編碼引入 CSS 同 JavaScript 檔案。正確嘅方法係喺 functions.php 入面用 wp_enqueue_style() 同埋 wp_enqueue_script() 函數,並且掛載到 wp_enqueue_scripts 掛咗喺個鈎上面。咁樣可以確保依賴關係啱晒,同埋避免重複載入。

InterServer 共享主機
共享主機:每月1TB,只需£2.50;首月只需£0.10,使用優惠碼 tryinterserver。461個雲端應用程式腳本,一鍵安裝。
function my_first_theme_scripts() {
    // 加载主样式表
    wp_enqueue_style( 'my-first-theme-style', get_stylesheet_uri() );
    // 加载导航脚本,依赖 jQuery
    wp_enqueue_script( 'my-first-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array('jquery'), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'my_first_theme_scripts' );

主題嘅國際化同發佈準備

實現主題翻譯

為咗你個主題可以畀全世界嘅用戶用到,國際化(i18n)係必要嘅步驟。即係話你需要將所有面向用戶嘅字串用翻譯函數包住。最常用嘅函數係 __()(用喺 PHP 度回顯翻譯)同埋 _e()(用喺 PHP 度輸出翻譯)。同時,喺 style.css 嘅頭同埋 functions.php 嘅加載函數入面,需要正確設定文字域(Text Domain),例如我哋之前設定嘅 my-first-theme

進行最終測試同壓縮

發佈之前,必須喺唔同環境(唔同 PHP 版本、唔同 WordPress 版本)同唔同設備(桌面、平板、手機)上面進行全面測試。檢查所有模板檔案係咪正常運作,功能係咪按預期實現,以及係咪符合 WordPress 官方嘅主題審核標準。

最後,移除所有除錯代碼同註解(除非對用戶有幫助),並用工具(例如 CodeKit 或者網上壓縮器)壓縮你嘅 CSS 同 JavaScript 檔案,減細檔案體積。將成個主題檔案夾打包成 ZIP 檔案,就可以準備提交去 WordPress.org 主題目錄或者分發畀用戶喇。

摘要

由零開始創建 WordPress 主題係一個系統性嘅學習過程,涵蓋咗由環境搭建、理解模板層級、構建核心模板檔案,到透過 functions.php 集成高級功能嘅全流程。關鍵在於跟從 WordPress 嘅編碼標準同最佳實踐,例如用內置函數、正確引入資源、實現國際化。透過親手實踐本文所講嘅步驟,你唔單止會得到一個可以運行嘅主題,更加會深入理解 WordPress 主題工作嘅核心機制,為開發更複雜、更專業嘅主題打下堅實基礎。

常見問題

創建主題係咪一定要識 PHP?

係嘅,深入掌握 PHP 係開發自訂 WordPress 主題嘅必備條件。因為 WordPress 本身係用 PHP 編寫嘅,所有模板文件(如 index.php, single.php)同功能檔案(functions.php)都直接使用 PHP 代碼來動態生成內容、調用數據庫同處理邏輯。冇 PHP 知識,你將無法理解同操作主題嘅核心部分。

主題開發係咪一定要從零開始寫晒所有代碼?

唔一定。對於初學者,從零開始係極佳嘅學習途徑。但係喺實際工作中,開發者通常會用「啟動主題」(Starter Theme)或者「父主題」作為基礎。例如,官方嘅 _Underscores (_s) 主題就係一個極簡、符合編碼規範嘅高質起點,佢已經搭建好基本嘅文件結構同常用函數,你可以喺呢個基礎上進行定制開發,咁樣可以大大提高效率同確保代碼質量。

functions.php 檔案出錯會導致咩後果?

functions.php 檔案入面嘅語法錯誤或者致命錯誤會令 WordPress 網站出現「白屏死機」(White Screen of Death),即係前臺同後臺管理界面都冇辦法訪問。呢個係因為呢個檔案喺主題加載初期就已經被執行。遇到呢種情況,你需要透過 FTP 或者主機檔案管理器,將出錯嘅主題資料夾改名或者換成一個功能正常嘅主題(例如 Twenty Twenty-Six),咁樣就可以恢復網站訪問,然後再去修復錯誤代碼。

點樣可以令我嘅主題支援古騰堡編輯器?

要令主題更好地支援古騰堡(Gutenberg)區塊編輯器,首先應該喺 functions.php 入面用 add_theme_support( ‘editor-styles’ ) 嚟啟用編輯器樣式支援。然後,使用 add_editor_style() 呢個函數會將你嘅主題樣式表或者專為編輯器寫嘅 CSS 檔案引入後台編輯器,咁樣可以確保用戶編輯時見到嘅樣式同前端顯示盡量一致。另外,你仲可以加埋對齊闊度、顏色自訂呢啲區塊功能嘅支援。