設定開發環境同了解主題結構
喺你寫第一行代碼之前,正確咁搭建開發環境係一個至關重要嘅第一步。高效嘅本地開發環境可以令你快速預覽更改,毋須將未完成嘅程式碼部署到實時伺服器。我哋建議使用 Local by Flywheel、XAMPP 或 MAMP 等工具,喺你嘅本地電腦建立一個集成分嘅環境,包括 Apache、MySQL 同 PHP。同時,可靠嘅程式編輯器(例如 VS Code 或 PHPStorm)同埋瀏覽器開發工具都會成為你嘅必備夥伴。
下一步,你要徹底了解 WordPress 主題嘅結構。一個基本嘅主題只需要兩份檔案:style.css 同埋 index.php不過,一個功能齊全、結構清晰嘅主題,會包含大量嘅範本檔案同目錄。
核心檔案同目錄分析
位於主題嘅根目錄 style.css 呢個檔案唔只係樣式表,佢係主題嘅「身份證」。喺佢嘅標頭入面嘅評論區包含咗所有主題嘅元數據,例如主題名稱、作者、描述同版本號。WordPress 會用呢啲資料喺後台識別你嘅主題。
推薦閱讀 WordPress 主題開發指南:從零開始打造高效能自訂主題。
/*
Theme Name: My First Theme
Theme URI: https://example.com/my-first-theme
Author: Your Name
Author URI: https://example.com
Description: A custom theme built from scratch.
Version: 1.0
License: GNU General Public License v2 or later
Text Domain: my-first-theme
*/ 另一份關鍵文件係 functions.php佢唔係一個範本檔案,而係一個主題嘅「功能增強器」。喺呢度,你可以新增自訂功能、註冊選單同側邊欄,並包含腳本同樣式表。基本上,呢度係一個可以讓你喺唔改動 WordPress 核心檔案嘅情況下,向主題加入 PHP 程式碼嘅地方。
範本階層同檔案組織
WordPress 採用一個稱為「範本階層」的智能系統,用來決定在特定頁面請求時載入哪一個範本檔案。了解這個階層是高效開發的關鍵。例如,當檢視單一文章時,WordPress 會按以下順序搜尋: single-post.php、single.php… 最後 index.php. 常見嘅範本檔案包括:
* header.php:網站標頭
* footer.php:網站腳註。
* sidebar.php:側邊欄
* page.php:用喺單一頁面。
* single.php:單獨嘅文章
* archive.php:用於檔案頁面,例如分類同標籤。
* 404.php: 404 錯誤頁面。
* front-page.php:網站主頁(優先於主頁設定)
將呢啲範本檔案拆分,然後使用 get_header(), get_footer(), get_sidebar() 只喺需要嘅時候先呼叫函數,係保持程式碼 DRY(Don't Repeat Yourself)嘅最佳做法。
建立主題範本同循環
所有 WordPress 主題嘅推動力都來自「主循環」。呢個循環就係 WordPress 用嚟從資料庫撈內容(文章、頁面等等),然後喺頁面顯示嘅機制。正確理解同使用呢個循環,係主題開發嘅基本技能。
主循環嘅標準語法
一個典型嘅迴圈結構包含喺一個 `if` 條件語句入面,用嚟檢查當前查詢有冇任何文章要顯示。我哋用 while 用一個迴圈逐篇迭代所有文章。
推薦閱讀 由零開始到完成:帶實用教學嘅全面 WordPress 主題開發指南。
<article id="post-<?php the_ID(); ?>" no numeric noise key 1007>
<header class="entry-header">
<h2 class="entry-title"><a href="/yue/</?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
</header>
<div class="entry-content">
<?php the_content(); ?>
</div>
</article>
<p>唔好意思,冇任何帖子符合你嘅篩選條件。</p>
<?php endif; ?> 喺迴圈入面,你可以用一連串範本標籤去顯示文章資訊,例如 the_title(), the_content(), the_permalink(), the_post_thumbnail() 等等
建立自訂頁面範本
除咗標準嘅範本階層檔案之外,你可以建立自訂頁面範本,為每頁提供獨特嘅版面配置。只要喺範本檔案嘅標題評論中加入以下內容: Template Name: 只要簡單咁講出立場就得。
<?php
/*
Template Name: 全宽页面布局
*/
get_header(); ?>
<div id="primary" class="full-width-content">
<main id="main">
<?php
while ( have_posts() ) : the_post();
get_template_part( 'template-parts/content', 'page' );
endwhile;
?>
</main>
</div>
<?php get_footer(); ?> 一旦建立咗,呢個範本就會喺 WordPress 後台儀錶板嘅「屬性」範本下拉選單出現,編輯者就可以喺度揀選。為咗更好咁組織程式碼,我哋建議將可重用嘅內容片段(例如文章摘要同文章元資料)放入 template-parts 喺目錄入面,並使用 get_template_part() 函數調用
新增功能同主題選項
現代化嘅主題唔應該淨係一堆靜態範本;佢應該提供合理程度嘅自訂功能,容許用戶唔使動手改程式碼就可以調整網站嘅外觀。呢個主要係透過 functions.php 文件同 WordPress API 實現。
註冊主題支援嘅功能
使用 add_theme_support() 函數容許你宣告主題支援邊啲 WordPress 核心功能。呢個係啟用特色圖片、自訂標誌同文章格式等功能的標準做法。
function my_theme_setup() {
// 启用文章和评论的 RSS feed 链接
add_theme_support( 'automatic-feed-links' );
// 启用文章特色图像
add_theme_support( 'post-thumbnails' );
// 启用自定义 logo
add_theme_support( 'custom-logo', array(
'height' => 100,
'width' => 400,
'flex-height' => true,
'flex-width' => true,
) );
// 启用标题标签功能(WordPress 自动管理 `<title>` 标签)
add_theme_support( 'title-tag' );
// 启用 HTML5 标记支持
add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' ) );
}
add_action( 'after_setup_theme', 'my_theme_setup' ); 建立選單同小工具區域
導航選單同小工具係打造自訂版面嘅關鍵。你要由……開始。 functions.php 你必須先登記佢哋,先至可以用喺範本入面。
推薦閱讀 WordPress 入門:五分鐘建立你嘅第一個網站。
function my_theme_menus() {
register_nav_menus( array(
'primary' => __( '主导航菜单', 'my-first-theme' ),
'footer' => __( '页脚菜单', 'my-first-theme' ),
) );
}
add_action( 'after_setup_theme', 'my_theme_menus' ); 註冊小工具區域 (側邊欄):
function my_theme_widgets_init() {
register_sidebar( array(
'name' => __( 'Main sidebar', 'my-first-theme' ),
'id' => 'sidebar-1',
'description' => __( 'Add widgets here.', 'my-first-theme' ),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
}
add_action( 'widgets_init', 'my_theme_widgets_init' ); 喺範本入面,使用 wp_nav_menu() 顯示選單,使用 dynamic_sidebar() 顯示小工具區域。
安全地匯入腳本同樣式
千祈唔好直接喺範本檔案入面硬編碼 <link> 或 <script> 標籤。應該使用 wp_enqueue_script() 同埋 wp_enqueue_style() 功能,並將佢哋安裝到 wp_enqueue_scripts 掛咗鈎
function my_theme_scripts() {
// 引入主样式表
wp_enqueue_style( 'my-theme-style', get_stylesheet_uri() );
// 引入自定义 JavaScript 文件
wp_enqueue_script( 'my-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '', true );
// 如果需要,引入 jQuery(注意:WordPress 默认已包含)
// wp_enqueue_script( 'jquery' );
}
add_action( 'wp_enqueue_scripts', 'my_theme_scripts' ); 效能優化同進階主題功能
一旦主題開發完成,就要優化佢,確保佢夠快、夠安全,同埋易於維護。以下係一啲進階嘅最佳實踐。
落實效能最佳實踐
* 腳本同樣式管理:只喺需要嘅頁面先載入腳本同樣式。使用 wp_enqueue_scripts 鉤子結合條件檢查(例如 is_front_page(), is_page())。
圖片優化:確保主題產生嘅圖片尺寸合適。使用 add_image_size() 定義合適嘅圖片尺寸,並喺前端使用呢啲尺寸,咁就唔使前端去重新尺寸大型圖片。
* 減少 HTTP 請求:適當合併 CSS 同 JavaScript 檔案(雖然 WordPress 插件通常會自動處理,但開發者都應該留意)。
使用緩存:在程式碼層面,你可以透過 Transients API 緩存複雜資料庫查詢的結果。
確保主題嘅安全性同國際化
安全至上。永遠要對用戶輸入進行逃逸或驗證。WordPress 提供多種函數幫你做到:
當輸出動態內容時,使用 esc_html(), esc_attr(), esc_url() 等等
當翻譯文字時,使用 __(), _e() 呢啲函數,並為函數調用提供一個文字範圍。
喺建立主題選項時,記住要用 WordPress 提供嘅非ce值同權限檢查,以防 CSRF 同未經授權嘅存取。
探索自訂模組同塊支援
對於更進階嘅自訂需求,WordPress 自訂器係一個強大嘅即時預覽 API。你可以使用 $wp_customize 為物件新增設定同控制。
同時間,隨住Gutenberg區塊編輯器越嚟越受歡迎,喺主題中加入「區塊樣式」同「編輯器樣式」嘅支援變得非常重要。咁樣可以確保前端同後端編輯器嘅內容呈現保持一致,為用家帶來無縫嘅體驗。
摘要
WordPress 主題開發係一個全面嘅流程,由了解其核心架構(範本階層、主循環)開始,然後到建立範本同加入功能(選單、小工具、特色圖片),最後優化效能同加強安全。跟足最佳實踐──例如拆分模板檔案、正確載入資源,以及實行國際化同安全措施──係開發專業級主題嘅關鍵。喺本地環境開發,並善用強大嘅鉤子同函數,你可以整到唔單止外觀吸引,仲有健壯易於維護同擴充嘅程式碼。記住,持續學習同實踐──由簡單嘅主題開始,逐步挑戰更複雜嘅項目──係掌握呢門技能最有效嘅方法。
常見問題
開發 WordPress 主題需要咩基本知識?
你需要對 HTML、CSS 同 PHP 有基本認識。具備 JavaScript 知識——特別係用嚟同 WordPress REST API 互動或者開發 Blocks——會係一大優勢。了解 WordPress 嘅基本運作原理,例如文章類型、分類法同資料庫查詢,都係一個好重要嘅起點。
我點樣先可以確保我嘅主題符合 WordPress 官方目錄嘅上傳標準?
如果你想將主題提交到官方 WordPress.org 主題目錄,就必須嚴格遵守《主題審查指引》。當中包括:採用安全編碼做法(輸出轉義、輸入驗證)、實行完整國際化(使用翻譯函數及正確嘅文字欄位)、確保主題程式碼無錯誤或警告、提供無障礙支援,以及唔捆綁任何唔相容 GPL 嘅程式碼或資源。建議你喺開發一開始就閱讀呢啲指引。
子主題同父主題有咩分別?幾時應該用?
父主題係一個功能齊全、獨立運作嘅主題,包含晒所有必要嘅範本檔案同功能。子主題就唔同,佢要依賴父主題;佢繼承晒父主題嘅所有功能,並容許你只要加或改幾條檔案(例如 style.css 同埋 functions.php) 去自訂外觀同功能。當你想修改現有嘅主題(特別係受歡迎嘅框架或商業主題),但又想將來可以安全咁更新父主題而唔會失去你嘅自訂,就應該建立子主題。
單元測試係乜嘢?點解佢哋咁重要?
“「主題單元測試」通常指一套包含各種內容類型嘅 WordPress 測試資料(XML 檔案)。你將佢引入開發網站,全面測試主題喺唔同情境下嘅表現,例如長篇文章、短篇文章、多層留言、各種媒體格式(圖片、影片、音頻)、小工具、選單等等。呢個步驟好重要,因為可以幫你識別主題喺樣式、版面同功能方面嘅潛在問題,確保主題喺真實複雜嘅內容環境中正確運作,避免推出後出現用戶投訴。
下一步應該點做?
延伸閱讀及實用知識
以下內容與本文主題相關,適合進一步閱讀。一般而言,最好由與你目前問題最緊密相關的文章開始,然後逐步擴展到周邊主題。