WordPress主題開發入門指南:從零開始創建你嘅第一個自訂主題

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

準備工作同環境搭建

喺開始動手寫代碼之前,你需要一個穩定、專業嘅本地開發環境。強烈建議唔好喺線上伺服器直接修改主題檔案,本地嘅開發環境可以讓你自由測試而唔會影響網站嘅正常訪問。你可以選擇整合環境軟件,例如 XAMPP、MAMP(Mac)或者 Laragon(Windows),佢哋可以一鍵安裝並設定好 Apache、MySQL 同 PHP。

WordPress 本身亦都需要喺你嘅本地環境中安裝。去 WordPress 官網下載最新嘅安裝包,解壓到本地伺服器嘅網站根目錄(例如 XAMPP 嘅 htdocs 資料夾)。之後,透過瀏覽器訪問並完成著名嘅「五分鐘安裝」。安裝過程中,請記住你設定嘅數據資料。

最後,你需要一款趁手嘅代碼編輯器或者整合開發環境。Visual Studio Code、PhpStorm 或者 Sublime Text 都係優秀嘅選擇,佢哋能夠提供語法高亮、代碼提示同檔案管理功能,極大提高開發效率。

推薦閱讀 一步步掌握WordPress主題開發:從零開始構建自訂主題

了解 WordPress 主題基礎結構

一個 WordPress 主題本質上係一個喺 /wp-content/themes/ 目錄下嘅文件夾,包含一系列跟隨特定規則嘅文件同目錄。呢啲文件一齊合作,話俾 WordPress 知點樣呈現網站嘅外觀同內容。

UltaHost WordPress 主機
30日退款保證,無限頻寬同數據庫,免費DDoS防護,買3年優惠50%

佢最核心嘅機制係「模板層級」。WordPress 會根據當前訪問嘅頁面類型,自動揀對應嘅模板文件來呈現內容。例如,當訪問一篇博客文章時,WordPress 會優先搵 single.php;當訪問博客首頁時,會搵 home.phpindex.php。这种机制赋予了主题极大的灵活性。

每個主題都必須包含兩個基礎檔案:style.css 同埋 index.phpstyle.css 的作用不仅是提供样式,其文件头部注释块更是主题的“身份证”,用于向 WordPress 声明主题的名称、作者、描述等元信息。index.php 则是最后的安全网,如果其他更具体的模板文件不存在,WordPress 就会使用它。

一个典型的主题头部注释如下:

/*
Theme Name: 我的第一个主题
Theme URI: https://example.com/my-first-theme
Author: 你的名字
Author URI: https://example.com
Description: 这是一个用于学习的简单 WordPress 主题。
Version: 1.0
License: GPL v2 or later
Text Domain: my-first-theme
*/

Text Domain 用于国际化,它是后续调用翻译函数时使用的标识符。

推薦閱讀 構建專業網站:從零開始創建自訂WordPress主題嘅完整指南

除了这两个文件,一个功能完整的主题通常还会包含:header.php(網頁頭部)、footer.php(網頁底部)、sidebar.php(侧边栏)以及 functions.php(主题功能增强文件)。通过理解这个基础结构,你就掌握了主题开发的骨架。

創建核心模板文件

现在,让我们开始创建第一个主题。在你的 /wp-content/themes/ 目录下,新建一个文件夹,命名为例如 my-first-theme。然后,在该文件夹内创建最基本的文件。

首先創建 style.css,并添加上一部分提到的主题头部注释。接下来,创建 index.php,这是你的第一个模板文件。一个最简单的 index.php 可以只包含调用文章标题和内容的循环:

hosting.com 共享主機
高效能,配備 AMD EPYC 處理器、NVMe SSD 儲存同 LiteSpeed,提供全天候專業內部支援,採用先進安全措施,包括 SSL、暴力破解、惡意軟件同 DDoS 防護,可節省高達 73%。
<?php get_header(); ?>
<main>
  
      <article>
        <h2><?php the_title(); ?></h2>
        <div><?php the_content(); ?></div>
      </article>
    
    <p>暫時冇內容。</p>
  <?php endif; ?>
</main>

这段代码使用了模板标签 get_header(), get_sidebar(), get_footer(), the_title() 同埋 the_content()。为了让它工作,你需要创建对应的头部、侧边栏和底部文件。

創建 header.php,它应该包含 HTML 文档的起始部分,直到主要内容区开始:

<!DOCTYPE html>
<html no numeric noise key 1007>
<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 1004>
  <header>
    <h1><a href="/yue/</?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
    <p><?php bloginfo( 'description' ); ?></p>
    <nav>
      'primary'
        ) );
      ?&gt;
    </nav>
  </header>

呢度,wp_head() 是至关重要的钩子,它允许 WordPress 核心、插件和主题向页面头部插入必要的代码(如样式表链接)。body_class() 函数会输出一系列语义化的 CSS 类名,方便你进行精细化样式控制。

推薦閱讀 WordPress 核心架構同工作原理

創建 footer.php 来关闭打开的标签:

  <footer>
    <p>©</p>
    <?php wp_footer(); ?>
  </footer>
</body>
</html>

注意,wp_footer() 是与 wp_head() 相对的尾部钩子,同样不可或缺。

InterServer 共享主機
共享主機:每月1TB,只需£2.50;首月只需£0.10,使用優惠碼 tryinterserver。461個雲端應用程式腳本,一鍵安裝。

創建 sidebar.php,暂时可以只放一个简单的控件调用:

<aside>
  <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
    <?php dynamic_sidebar( 'sidebar-1' ); ?>
  <?php endif; ?>
</aside>

此时,你的主题已经具备了基础的“套模板”功能,可以在后台激活并预览了。虽然简陋,但它遵循了 WordPress 的核心架构。

透過 Functions.php 加強主題功能

functions.php 文件是你的主题的“控制中心”。它不是一个模板文件,而是一个在主题初始化时自动加载的 PHP 文件,用于添加功能、注册组件、挂钩到 WordPress 的各个 API。这是实现主题专业化的关键。

你需要在主题根目录创建这个文件。首先,让我们为主题添加样式表和脚本文件。正确的做法是通过 WordPress 提供的函数来“入队”,而不是直接在 HTML 中写 <link> 標籤。

<?php
function my_first_theme_scripts() {
    // 添加主题的主样式表
    wp_enqueue_style( 'main-style', get_stylesheet_uri() );

// 添加一个自定义样式表
    wp_enqueue_style( 'custom-style', get_template_directory_uri() . '/assets/css/custom.css', array(), '1.0' );

// 添加一个 JavaScript 文件
    wp_enqueue_script( 'main-script', get_template_directory_uri() . '/assets/js/main.js', array('jquery'), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'my_first_theme_scripts' );

呢度,wp_enqueue_style() 同埋 wp_enqueue_script() 是用于安全添加资源的函数。get_stylesheet_uri() 指向主题的 style.cssadd_action() 将我们的函数挂载到 wp_enqueue_scripts 这个钩子上,确保它在正确的时机执行。

接下来,注册导航菜单和侧边栏(小工具区域):

function my_first_theme_setup() {
    // 注册一个导航菜单位置
    register_nav_menus( array(
        'primary' => __( '主导航菜单', 'my-first-theme' ),
        'footer'  => __( '底部菜单', 'my-first-theme' ),
    ) );

// 启用文章特色图像功能
    add_theme_support( 'post-thumbnails' );

// 为“文章”类型启用文章格式支持
    add_theme_support( 'post-formats', array( 'aside', 'gallery', 'quote' ) );

// 添加对 HTML5 标记格式的支持
    add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' ) );

// 启用标题标签功能
    add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'my_first_theme_setup' );

register_nav_menus() 让后台的“外观”->“菜单”界面中出现可供选择的菜单位置。add_theme_support() 函数用于开启各种主题功能,这是现代主题开发的标准做法。例如,开启 title-tag 后,你就不必在 header.php 度手動輸出 <title> 標籤咗。

最后,注册一个侧边栏小工具区域:

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

至此,你的主题已经具备了从基础呈现到功能增强的完整链条。通过后台设置菜单、添加小工具,你就能看到主题的动态变化。

摘要

從創建一個包含 style.css 同埋 index.php 的文件夹开始,到构建分离的模板部件(header.php, footer.php),再到通过强大的 functions.php 文件注册菜单、侧边栏并安全地加载资源,你已经走过了创建一个自定义 WordPress 主题的完整核心路径。这个过程的核心在于理解并遵循 WordPress 的模板层级和钩子系统。

你不再仅仅是一个主题的使用者,而是其创造者。掌握了这些基础知识后,你可以继续深入学习更复杂的模板文件,如 single.phppage.phparchive.php,探索 WordPress 循环的更多可能性,并利用条件标签(如 is_page(), is_single())实现更精细的页面控制。主题开发的世界广阔而有趣,这仅仅是一个坚实的起点。

常見問題

开发 WordPress 主题需要精通 PHP 吗?

需要具备 PHP 的基础知识,但无需达到精通的水平。你至少需要理解变量、数组、条件语句(if/else)、循环(while/foreach)以及函数的基本概念。因为 WordPress 主题开发大量使用了其内置的 PHP 函数(模板标签)和钩子系统,所以学习重点在于理解 WordPress 特有的 PHP 函数如何使用,而非从头编写复杂的 PHP 算法。

點解必須要用 wp_head() 同 wp_footer() 函數?

这两个函数是 WordPress 的核心钩子。wp_head() 位于 </head> 标签前,它允许 WordPress 核心、插件和你自己的主题在页面头部插入必要的代码,例如 CSS 样式表链接、元标签、JavaScript 变量等。wp_footer() 位于 </body> 标签前,常用于插入分析代码、延迟加载的 JavaScript 文件。如果缺少它们,许多插件将无法正常工作,甚至 WordPress 自身的某些功能也会出现异常。

點樣可以為我個主題加頁面模板?

開一個新嘅 PHP 檔案,例如 page-fullwidth.php。在这个文件的顶部,你需要添加一个特定的模板名称注释块。例如:

<?php
/**
 * Template Name: 全宽页面
 * Description: 一个没有侧边栏的页面模板
 */

然后,你可以在这个文件内编写不同于 page.php 的 HTML 结构,比如省略 get_sidebar() 调用。保存后,在 WordPress 后台编辑页面时,在“页面属性”的“模板”下拉列表中,就会出现“全宽页面”这个选项供你选择。

主题开发中如何处理 CSS 和 JavaScript 才是最佳实践?

最佳实践是使用 WordPress 提供的 wp_enqueue_style() 同埋 wp_enqueue_script() 函數,喺 functions.php 中掛載到 wp_enqueue_scripts 钩子来添加资源。这种方式可以:1)正确处理依赖关系(例如你的脚本依赖 jQuery);2)避免重复加载同一资源;3)方便插件和其他主题代码进行管理;4)符合 WordPress 编码标准。绝对要避免直接在模板文件中使用 <link><script> 標籤硬編碼資源。

我的主题如何实现多语言支持(国际化)?

你需要做两件事。首先,在 style.css 的头部注释和调用翻译文本时,使用正确的“文本域”(Text Domain)。如指南中所示,定义 Text Domain: my-first-theme。其次,喺 functions.php 和所有模板文件中,对所有需要翻译的用户界面文本使用 WordPress 的翻译函数进行包裹,最常用的是 __()(返返翻譯後嘅字串)同 _e()(直接回显翻译后的字符串)。例如:<?php _e( ‘Hello World’, ‘my-first-theme’ ); ?>。之后,你可以使用 Poedit 等工具生成 .pot 模板檔案,俾翻譯人員創建唔同語言嘅 .po 同埋 .mo 檔案。