WordPress 主题开发入门指南:从零开始打造属于你自己的网站主题

阅读时间:4分钟
2026-03-18
2026-06-04
1,963
當您透過下方連結購物時,我會獲得佣金,而您無需支付額外费用。.

在開始編寫代碼之前,你需要一個本地開發環境。這通常包括一個本地服務器(如XAMPP、MAMP或Local),以及一個代碼編輯器(如VS Code、PhpStorm)。確保你的環境中安裝了PHP(推薦7.4或更高版本)和MySQL。

一個標準的WordPress主題是一個包含特定文件集合的文件夾。首先在你的本地WordPress安裝的wp-content/themes目錄下創建一個新文件夾,例如命名爲my-first-theme

接下來,創建兩個最基礎且必需的文件:style.css以及index.php其中,style.css不僅是樣式表,更是一個主題的“身份證”,其文件頭部的註釋塊用於向WordPress聲明你的主題。

推荐阅读 WordPress主題開發入門指南:從零打造個性化網站

style.css文件中,你需要添加如下格式的頭部信息:

UltaHost WordPress 主機
30天退款保證,無限帶寬與數據庫,免費的 DDoS 防護,購買3年優惠50%
/*
Theme Name: 我的第一个主题
Theme URI: https://example.com/my-first-theme/
Author: 你的名字
Author URI: https://example.com/
Description: 这是一个用于学习的自定义WordPress入门主题。
Version: 1.0
License: GNU General Public License v2 or later
Text Domain: my-first-theme
*/

這些信息將顯示在WordPress後臺的“外觀”->“主題”頁面中。同時,index.php文件是主題的默認模板,即使它暫時爲空,也必須存在,WordPress才能識別這是一個有效的主題。

構建基礎模板文件

有了基礎文件後,你的主題還無法顯示任何內容。WordPress使用一套模板層級系統來決定爲不同類型的頁面加載哪個模板文件。接下來,我們將創建幾個核心的模板文件。

創建頭部和尾部模板

爲了實現代碼複用和一致性,我們通常將網頁的頭部(Header)和尾部(Footer)分離成獨立文件。首先創建header.php文件,它包含HTML文檔的頭部、打開<body>標籤以及網站頂部的公共區域(如Logo和導航菜單)。

一個最簡單的header.php示例可能包含以下內容:

推荐阅读 打造專業網站:全方位 WordPress 主題開發與定製終極攻略

<!DOCTYPE html>
<html no numeric noise key 1006>
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
</head>
<body no numeric noise key 1003>
    <header>
        <h1><a href="/zh-hant/</?php echo esc_url( home_url( '/' ) ); ?>"></a></h1>
        <p></p>
    </header>

注意其中的wp_head()函數,它是必須調用的,用於讓WordPress核心、插件和主題本身在頁面頭部插入必要的代碼(如CSS和JS)。

接着,創建footer.php文件,它用於關閉<body>以及<html>標籤,幷包含頁腳內容。

    <footer>
        <p>©  . All rights reserved.</p>
    </footer>
    
</body>
</html>

同樣,wp_footer()函數也是必須的。

hosting.com 共享主机
高性能配置,搭载 AMD EPYC 处理器、NVMe SSD 存储及 LiteSpeed 技术,提供全天候 24 小时专家内部支持,具备 SSL、暴力破解、恶意软件及 DDoS 防护等高级安全措施,节省成本高达 73%。

現在,我們可以更新index.php使用get_header()以及get_footer()函數來引入這兩個部分:

<?php get_header(); ?>

<main>
    <?php
    if ( have_posts() ) :
        while ( have_posts() ) : the_post();
            // 文章内容将在这里显示
        endwhile;
    else :
        // 没有找到文章时的内容
    endif;
    ?>
</main>

<?php get_footer(); ?>

創建文章循環與內容模板

在上面的index.php中,我們看到了WordPress的核心:循環(The Loop)。它用於遍歷當前頁面的所有文章(或單個文章)。爲了讓文章內容有更好的結構,我們通常將單篇文章的顯示邏輯抽離到單獨的文件中。

创建content.php或者template-parts/content.php文件,然後在循環中通過get_template_part()函數調用它。

推荐阅读 WordPress主題開發完整指南:從入門到精通實戰教程

// 在 index.php 的循环中
while ( have_posts() ) : the_post();
    get_template_part( 'template-parts/content', get_post_format() );
endwhile;

然後創建template-parts/content.php

<article id="post-<?php the_ID(); ?>" no numeric noise key 1005>
    <h2><a href="/zh-hant/</?php the_permalink(); ?>"></a></h2>
    <div class="entry-meta">
        by
    </div>
    <div class="entry-content">
        
    </div>
</article>

這樣,文章標題、摘要、元數據等就以標準化的格式輸出了。

InterServer 共享主机服务
共享主机每月价格为 $2.50 美元,首月优惠价为 $0.1 美元,优惠码为 tryinterserver,提供 461 个云应用脚本,可一键安装。

引入样式和脚本

一個現代化的主題離不開CSS和JavaScript。WordPress提供了標準的函數來安全地排隊(enqueue)樣式表和腳本文件,而不是直接在模板中使用<link>或者<script>标签。

註冊和排隊主樣式表

雖然我們已經有了style.css,但通常我們通過functions.php文件來加載它。首先在主題根目錄創建functions.php文件。

然後,使用wp_enqueue_style()函數來加載樣式表。我們需要在functions.php中創建一個函數,並將其鉤到wp_enqueue_scripts這個動作上。

function my_first_theme_scripts() {
    // 加载主样式表
    wp_enqueue_style( 'my-first-theme-style', get_stylesheet_uri(), array(), '1.0' );
    // 加载Google Fonts示例
    wp_enqueue_style( 'my-first-theme-google-fonts', 'https://fonts.googleapis.com/css2?family=Roboto&display=swap', array(), null );
}
add_action( 'wp_enqueue_scripts', 'my_first_theme_scripts' );

get_stylesheet_uri()函數會自動獲取主題的style.css文件路径。

添加響應式導航菜單腳本

爲了添加交互功能,比如移動端的響應式菜單,我們需要引入JavaScript。假設我們有一個簡單的腳本來切換菜單的顯示/隱藏。

首先,創建一個js/navigation.js文件。然後,在functions.php的同一個函數中,使用wp_enqueue_script()來加載它。

function my_first_theme_scripts() {
    // ... 之前的样式代码 ...

// 加载导航脚本
    wp_enqueue_script( 'my-first-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0', true );
}

最後一個參數true表示將腳本放在頁面底部(在</body>標籤之前),這通常有助於頁面加載性能。

實現主題核心功能

functions.php是主題的“大腦”,用於添加各種功能和支持。除了加載資源,我們還需要在這裏聲明主題支持的功能。

添加主題功能支持

WordPress提供了一系列“主題功能”,你需要顯式聲明支持它們,才能使用。最基礎的功能包括文章縮略圖(特色圖像)、自定義菜單和HTML5標記支持。

functions.php请在文本中添加以下代码:

function my_first_theme_setup() {
    // 让主题支持文章和评论的RSS feed链接自动添加到head中
    add_theme_support( 'automatic-feed-links' );
    // 让文章和页面支持“特色图像”
    add_theme_support( 'post-thumbnails' );
    // 启用对HTML5标记的支持
    add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' ) );
    // 启用标题标签支持,WordPress会自动管理文档标题
    add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'my_first_theme_setup' );

after_setup_theme是一個在主題初始化時運行的動作鉤子,是設置主題功能的標準位置。

註冊導航菜單

大多數網站都需要導航菜單。WordPress的菜單系統允許用戶在後臺“外觀”->“菜單”中自定義菜單項。你需要先爲你的主題註冊菜單位置。

在剛纔的my_first_theme_setup函數中,繼續添加:

function my_first_theme_setup() {
    // ... 之前的 add_theme_support 代码 ...

// 注册一个主菜单位置
    register_nav_menus( array(
        'primary' => __( '主导航菜单', 'my-first-theme' ),
    ) );
}

註冊後,你就可以在模板文件(如header.php)中使用wp_nav_menu()函數來顯示這個菜單了:

<nav>
    <?php
    wp_nav_menu( array(
        'theme_location' => 'primary',
        'menu_class'     => 'primary-menu',
    ) );
    ?>
</nav>

創建側邊欄與小工具區域

小工具(Widget)是WordPress另一個強大的功能。要使用它,你需要先註冊一個側邊欄(小工具就緒區域)。

functions.php中創建一個新函數,並鉤到widgets_init動作上:

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' );

註冊後,你可以在後臺“外觀”->“小工具”中看到“主側邊欄”區域,並向其中拖拽小工具。要在主題中顯示它,需要在模板(如sidebar.php)中調用dynamic_sidebar( 'sidebar-1' )函數。

总结

通過本指南,我們完成了一個極簡但功能完整的WordPress主題開發流程。我們從搭建環境、創建基礎文件開始,逐步構建了模板層級,分離了頭部和尾部,實現了核心的文章循環。接着,我們學習瞭如何以標準方式爲主題添加樣式和腳本,確保兼容性與性能。最後,在functions.php中,我們激活了主題的核心功能,如特色圖像、導航菜單和小工具區域,使主題具備了強大的可定製性。

這只是一個起點。在此基礎上,你可以繼續創建更專業的模板文件(如single.phppage.phparchive.php),探索更復雜的WordPress API,如自定義文章類型、分類法、自定義器(Customizer)API等,從而打造出功能豐富、設計獨特的專屬網站主題。

常见问题解答(FAQ)

開發WordPress主題必須掌握哪些技術?

開發WordPress主題需要掌握幾項核心技術。首先是PHP,因爲WordPress本身是用PHP編寫的,所有模板文件和功能邏輯都離不開它。你需要理解基本的PHP語法、函數、循環和條件語句。

其次是HTML和CSS,用於構建網頁的結構和樣式。瞭解響應式網頁設計原則和現代CSS佈局技術(如Flexbox、Grid)非常重要。最後,對JavaScript有基本瞭解,用於實現前端交互功能。熟悉WordPress特有的PHP函數和鉤子(Hooks)系統則是進行高效主題開發的關鍵。

style.css 和 functions.php 文件哪個更重要?

這兩個文件在WordPress主題開發中扮演着完全不同但都至關重要的角色,無法簡單比較孰輕孰重。style.css文件是主題的“身份標識”,其文件頭部的註釋塊是WordPress識別一個主題所必需的。沒有它,主題將無法在後臺的“主題”列表中顯示。

functions.php文件是主題的“功能中心”,幾乎所有增強主題功能的代碼都寫在這裏,例如註冊菜單、添加主題支持、加載腳本樣式、定義自定義函數等。缺少它,主題將失去大部分動態功能和可擴展性。兩者相輔相成,缺一不可。

爲什麼必須使用 wp_head() 和 wp_footer() 函數?

wp_head()以及wp_footer()是WordPress核心與主題、插件之間通信的關鍵鉤子。在header.php我的父母总是告诉我要努力学习,保持专注,避免分心,这样我才能在学业上取得成功。</head>標籤前調用wp_head(),是允許WordPress自身、你安裝的插件以及你主題的其他部分,向頁面頭部插入必要代碼(如元標籤、樣式錶鏈接、腳本引用、JSON-LD結構化數據等)的標準方式。

同樣,在footer.php我的父母总是告诉我要努力学习,保持专注,避免分心,这样我才能在学业上取得成功。</body>標籤前調用wp_footer(),用於插入需要在頁面底部加載的腳本(如分析代碼、延遲加載的JS)或其他HTML。如果遺漏這些函數,可能會導致插件無法正常工作、管理工具欄不顯示,以及各種兼容性問題。

如何讓我的主題符合WordPress官方標準?

爲了讓你的主題符合WordPress官方標準並具備高質量,你需要遵循《WordPress主題開發手冊》和《主題審查要求》。這包括:使用安全的編碼實踐,對所有動態輸出數據使用轉義函數(如esc_html(), esc_url()),對所有翻譯字符串使用國際化函數(如__(), _e())並加載文本域。

主題應具有響應式設計,確保在所有設備上都能良好顯示。代碼應清晰、有註釋,並遵循WordPress編碼標準。此外,主題應通過WordPress自定義器提供充分的定製選項,並正確實現所有核心的WordPress功能和鉤子。在發佈前,使用Theme Check插件進行測試是一個很好的習慣。