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

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

在開始編寫程式碼之前,你需要一個本地開發環境。這通常包括一個本地伺服器(如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-tw/</?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()函式也是必須的。

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

現在,我們可以更新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-tw/</?php the_permalink(); ?>"></a></h2>
    <div class="entry-meta">
        <?php the_date(); ?> by <?php the_author(); ?>
    </div>
    <div class="entry-content">
        
    </div>
</article>

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

InterServer 共享主机
虚拟主机的月费为1TB+5TB,价格为2.50美元。首月优惠价为1TB+5TB,价格为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'          => __( '主侧边栏', 'my-first-theme' ),
        'id'            => 'sidebar-1',
        'description'   => __( '在此添加小工具。', 'my-first-theme' ),
        'before_widget' => '<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外掛進行測試是一個很好的習慣。