入门级WordPress主题开发:从零开始构建你的第一个自定义主题

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

基礎準備工作

在開始編寫程式碼之前,合適的環境和基礎的理解是成功的基石。首先,你需要一個本地開發環境。你可以選擇整合軟體包如 XAMPP、MAMP 或 Local by Flywheel,它們能快速為你配置好 PHP、MySQL 和 Web 伺服器。當然,也可以選擇更靈活的方式,在本地手動搭建環境。確保你的 PHP 版本在 7.4 或以上,MySQL 在 5.6 或以上。

接下來,你需要為你的自定義主題建立一個獨立的目錄。這個目錄必須位於 WordPress 安裝目錄的 wp-content/themes/ 資料夾下。例如,你可以建立一個名為 my-first-theme 的資料夾。一個 WordPress 主題只需要兩個檔案就能被系統識別:index.php 以及 style.css其中,style.css 不僅是樣式表,更包含了定義主題元資料的檔案頭,這是主題的“身份證”。

建立主題核心檔案

編寫主題樣式表頭

style.css 檔案的開頭必須是格式化的 CSS 註釋塊,其中包含了 WordPress 識別主題所需的所有資訊。這是每個主題必須正確配置的部分。

推荐阅读 從零到一:WordPress 主題開發完整指南與實戰教學

/*
Theme Name: 我的第一个主题
Theme URI: https://example.com/my-first-theme/
Author: 你的名字
Author URI: https://yourwebsite.com
Description: 这是一个入门级的自定义 WordPress 主题,用于学习开发。
Version: 1.0.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
*/

其中,“Text Domain”用於國際化,我們將在後面使用函式 __() 或者 _e() 來使主題中的文字支援多語言翻譯。

UltaHost WordPress 主機
30天退款保證,無限頻寬與資料庫,免費的 DDoS 防護,購買3年優惠50%

構建基本模板檔案

index.php 是主題的預設模板,也是最重要的回退模板。當 WordPress 找不到更具體的模板檔案(如 single.php每当需要获取用户的当前位置时,就会使用到它。这是一个最基本的功能。 index.php 應該包含 WordPress 的迴圈(The Loop),這是輸出文章內容的核心機制。

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

<main id="main-content">
        
            
                <article id="post-<?php the_ID(); ?>" no numeric noise key 1011>
                    <h2><a href="/zh-tw/</?php the_permalink(); ?>"></a></h2>
                    <div class="entry-content">
                        
                    </div>
                </article>
            
        
            <p><?php _e( '抱歉,没有找到任何文章。', 'my-first-theme' ); ?></p>
        
    </main>



<footer id="site-footer">
        <p>©</p>
    </footer>
    
</body>
</html>

這個模板使用了多個核心 WordPress 函式,如 wp_head(), the_title(), the_content()函数 get_sidebar() 會嘗試載入一個名為 sidebar.php 的模板檔案。

實現模板層級與功能

WordPress 使用一套名為“模板層級”的規則來決定為特定頁面使用哪個模板檔案。理解這個層級是開發靈活主題的關鍵。例如,當訪問一篇部落格文章時,WordPress 會按順序查詢:single-post.php -> single.php -> singular.php -> index.php您可以通过创建这些特定文件来自定义不同页面的外观。

新增文章特色影象支援

現代主題通常支援“文章特色影象”(Post Thumbnail)。要啟用這個功能,你需要在主題的 functions.php 文件中使用了 add_theme_support() 函式。首先,在主題目錄下建立 functions.php 文件。

推荐阅读 实战指南:从零到精通WordPress主题开发的全面指南

<?php
/**
 * 我的第一个主题的功能函数文件
 */

if ( ! function_exists( 'my_first_theme_setup' ) ) :
    function my_first_theme_setup() {
        // 让 WordPress 管理标题标签
        add_theme_support( 'title-tag' );

// 启用文章特色图像支持
        add_theme_support( 'post-thumbnails' );
        // 为文章和页面设置默认特色图像尺寸
        set_post_thumbnail_size( 1200, 800, true );

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

引入樣式與指令碼檔案

正確地將 CSS 和 JavaScript 檔案加入佇列是 WordPress 開發的最佳實踐,它避免了資源衝突和重複載入。我們透過 wp_enqueue_style() 以及 wp_enqueue_script() 函式來實現。在 functions.php 中新增一個新的函式。

function my_first_theme_scripts() {
    // 引入主样式表
    wp_enqueue_style( 'my-first-theme-style', get_stylesheet_uri(), array(), wp_get_theme()->get( 'Version' ) );

// 引入自定义 JavaScript 文件
    wp_enqueue_script( 'my-first-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), wp_get_theme()->get( 'Version' ), true );

// 如果评论功能开启且有评论,加载评论回复脚本
    if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
        wp_enqueue_script( 'comment-reply' );
    }
}
add_action( 'wp_enqueue_scripts', 'my_first_theme_scripts' );

主題進階與最佳實踐

一個完整的主題不僅僅是展示內容,還需要考慮可訪問性、效能和組織結構。將不同的頁面部分(如頁首、頁尾、側邊欄)分離到獨立的模板檔案中,可以使程式碼更易於維護。

分離頁首與頁尾模板

建立 (注:此处"建立"可能指某个组织、项目或机构的创立过程。) header.php 以及 footer.php 檔案。將 index.php 嗯,您能再说一遍吗?我没听清楚。 <body> 標籤之前的所有內容移到 header.php</body> 標籤之前的所有內容移到 footer.php接下来,将原来的 (此处可能缺少后续内容) index.php 精簡為:

hostng.com 共享主机
高效能,配备 AMD EPYC CPU、NVMe SSD 存储和 LiteSpeed,全天候 24 小时专业内部支持,先进的安全措施包括 SSL、暴力破解、恶意软件和 DDoS 防护,节省高达 731 TB/月的带宽成本。
<main id="main-content">
        
            
                <article id="post-<?php the_ID(); ?>" no numeric noise key 1012>
                    
                        <div class="post-thumbnail">
                            
                        </div>
                    
                    <h2><a href="/zh-tw/</?php the_permalink(); ?>"></a></h2>
                    <div class="entry-content">
                        
                    </div>
                </article>
            
        
            <p><?php _e( '抱歉,没有找到任何文章。', 'my-first-theme' ); ?></p>
        
    </main>

建立側邊欄模板

同樣地,建立一個 sidebar.php 檔案,並在其中使用動態側邊欄函式 dynamic_sidebar()首先,你需要在 上注册一个账户。 functions.php 请将下文翻译成中文,并详细说明翻译过程: register_sidebar() 函式註冊一個側邊欄小工具區域。

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 中呼叫它:

<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
    <aside id="secondary" class="widget-area">
        <?php dynamic_sidebar( 'sidebar-1' ); ?>
    </aside>
<?php endif; ?>

总结

透過本文的步驟,你已經成功地從零開始構建了一個基礎但功能完整的 WordPress 自定義主題。你學會了建立核心檔案、理解模板層級、使用 functions.php 新增主題功能、以及遵循最佳實踐來組織和載入資源。這個主題具備了顯示文章、支援特色影象、註冊選單和側邊欄等基本功能。以此為起點,你可以繼續探索更復雜的模板檔案(如頁面模板、分類模板)、自定義文章型別、主題定製器 API 等,逐漸打造出功能強大、設計專業的 WordPress 主題。記住,實踐是學習的關鍵,嘗試修改程式碼並觀察變化,是鞏固知識的最佳方式。

推荐阅读 WordPress主题开发入门指南:从零开始创建自定义主题

常见问题解答(FAQ)

我的主題在後臺不顯示怎麼辦?

請首先檢查你的主題資料夾是否放置在正確的 wp-content/themes/ 目錄下。然後,確認 style.css 檔案頂部的主題資訊頭(CSS 註釋)格式是否正確無誤,特別是 “Theme Name:” 這一行必須存在且格式正確。任何拼寫錯誤或格式問題都可能導致 WordPress 無法識別你的主題。

修改了 functions.php 檔案導致網站白屏怎麼辦?

“白屏故障”通常是由以下原因之一导致的: functions.php 檔案中存在語法錯誤(如缺少分號、括號)或致命錯誤導致的。最快速的解決方法是使用 FTP 或檔案管理器訪問你的伺服器,將出錯的 functions.php 重命名文件(例如,将其改名为) functions.php.bak这样一来,WordPress 就会忽略该文件,使网站恢复可访问性。之后,你可以检查并修正程序代码中的错误。

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

如何為我的主題新增頁面模板?

要建立一個自定義頁面模板,首先在你的主題目錄下新建一個 PHP 檔案,例如 template-fullwidth.php请在该文件的开头处添加以下特定的模板注释:

<?php
/**
 * Template Name: 全宽页面
 */

然後,你可以在這個檔案中編寫你的 HTML 和 PHP 程式碼,記得使用 get_header(), get_footer() 等函式。儲存後,在 WordPress 後臺編輯或建立頁面時,就可以在“頁面屬性”的“模板”下拉框中看到並選擇“全寬頁面”了。

主題開發中 get_template_part() 函式有什麼用?

get_template_part() 函式是 WordPress 主題開發中用於模組化程式碼的利器。它的作用是載入你主題中的一個特定模板部分。例如,在迴圈中,你可以用 get_template_part( 'content', get_post_format() ); 來載入 content.php 或更具體的如 content-video.php 檔案。這極大地提高了程式碼的複用性和可維護性,讓你能輕鬆地為不同型別的文章內容建立不同的顯示模板。