本手册的目标是在其早期章节中带你了解现代 WordPress 主题开发的基础知识。然后,通过随后的每一章,逐步学习更高级的主题。
学习主题开发最快的方法就是从头到尾阅读这本手册,并跟随其中的示例进行操作。
要求
构建 WordPress 主题的最大要求是愿意学习。你在这里阅读这本手册,所以让我们将这一项从要求列表中划掉。
多年来,WordPress 主题设计已经发生了多次变化。如今,创建主题的途径比过去要低得多。你绝对可以没有任何编码知识来创建一个主题。但你会发现,熟悉几种网络语言会容易得多。
你会在手册中看到 HTML、CSS、PHP、JSON 和 JavaScript,因此能够轻松识别你所查看的语言会有所帮助。HTML 和 CSS 是网络的基础部分,因此应优先于其他语言。
以下是你可以用来了解更多内容的资源,但互联网上有数千个指南和教程:
你可以通过 WordPress 用户界面深入主题构建,至少可以通过修改和导出现有的块主题。但如果你想构建更高级的功能,或者真正从头创建一个主题,就需要掌握更多技能。
你的下一步
对于新手
是时候真正踏上学习主题开发的旅程了。这是一个激动人心的时刻,所以准备好迎接一场冒险吧。
设置环境:如果你第一次构建主题,或者只是想复习一下主题开发的基础知识,你的下一站应该是 工具和设置 页面。这将帮助你设置开发环境并确定你需要哪些工具才能起步。
快速入门:一旦你设置好,请查看 快速入门指南,该指南旨在让你品尝即将到来的内容。它将带你设置一个主题以开始工作。
理解基础知识:一旦你设置好并运行一切,就进入 核心概念 章节。在那里,你将学习创建 WordPress 主题的基础原则。
之后,只需继续完成手册的每一章。
对于经验丰富的主题作者
即使你已经多年在创建主题,时不时通读完整的手册也无妨。它定期更新,因此可能有你以前没见过的新内容。
请随意跳转以使用手册的导航链接找到你需要的具体主题。无论情况如何,主题手册都在这里帮助你发现解决方案。
感觉非常硬核? 跳转到 高级主题 章节。
记不起某个模板的命名格式了吗? 在 模板层次结构 文档中找到它。
需要复习一下 theme.json 吗? 没问题。查看 全局设置和样式 文档。
如果你在手册中找不到你正在寻找的主题,也可以在 WordPress 开发者博客的 主题类别 下找到主题教程和 walkthrough。
对于经典主题文档
虽然大多数章节中的一些内容适用于经典主题,但文档主要针对现代块主题。但是,如果你需要查找特定经典功能的文档,则有一个专门的 经典主题 章节。
如何阅读代码示例
在手册中,你会看到代码示例,本节旨在帮助你了解如何阅读它们。
手册将在其页面中使用一致的“命名空间”或“前缀”,通常显示为 theme_slug 或 theme-slug。此命名空间意在在你的主题中被替换为唯一的名称。
但你怎么知道你的命名空间是什么? 最直接的方法是使用你主题的名称。如果你的主题标题是 Fabled Sunset,你会将其转换为用例的适当格式。例如,当在 PHP 函数名中使用它时,它会变成 fabled_sunset,或者作为句柄/别名/ID 时变成 fabled-sunset。
“命名空间”代码的做法已有数十年历史。本质上,命名空间是为一组对象创建的标识符,以便它们不会与其他命名空间中的对象冲突。
WordPress 拥有庞大的插件和主题生态系统。每个都需要一种方式将自己与其他的区分开来。没有唯一的命名空间,会变得有点混乱并会出现错误。
例如,如果你的主题声明了一个名为 get_post() 的自定义函数而不是 fabled_sunset_get_post(),你的站点将因致命错误而失败,因为 WordPress 已经有一个具有此名称的函数:

避免这些类型的错误是手册将包括命名空间或前缀代码示例的主要原因。
命名空间示例
使用虚构的主题名称 Fabled Sunset,让我们看看一些格式化你的命名空间的示例。如果你现在不理解这些或者对代码一无所知,请不要担心。这只是为了帮助你阅读手册。
在脚本和样式句柄中的用法:
<?php
// theme-slug-editor 变为:
wp_enqueue_script( 'fabled-sunset-editor', ... );
// theme-slug-main 变为:
wp_enqueue_style( 'fabled-sunset-main', ... );在文本域中的用法(用于翻译):
<?php
// theme-slug 变为:
esc_html_e( 'Hello, world!', 'fabled-sunset' );在 PHP 函数中的用法:
<?php
// theme_slug_func() 变为:
function fabled_sunset_func() {
// ...
}在 PHP 类中的用法:
<?php
// Theme_Slug_Class() 变为:
class Fabled_Sunset_Class() {
// ...
}当你阅读手册时,你将学习何时使用每种情况。现在,只需知道你应该始终将示例命名空间替换为你项目中唯一的名称。
WordPress 编码标准 鼓励使用 PHP 的内置命名空间。同样的准则也适用:使用你主题的名称来创建你的命名空间。在这种情况下,示例主题的命名空间将是 Fabled_Sunset 或 FabledSunset。主题手册使用上述前缀样式用于 PHP 函数和类名。这主要是因为它对于显示一次性代码示例更简单。