WordPress主题作者调查:theme.json区块主题反馈问卷

WordPress 5.8版本中引入了一项革命性的主题选择系统,为区块设置、样式及模板配置提供了全新的解决方案。这一创新通过新增的theme.json文件实现,开发者可将该文件放置于主题文件夹的根目录下。FSE Outreach Program负责人Anne McCarthy近日宣布了一项针对开发者的调查,旨在收集对这一功能的反馈。她在公告中强调:”由于theme.json是新式综合样式系统的早期关键步骤,我们迫切需要收集所有用户的意见,以了解该工具的实际应用情况,并决定哪些内容应纳入WordPress核心。”这项调查向所有使用过theme.json的主题开发者开放,鼓励他们提供早期反馈,共同推动WordPress向前发展。

我在过去几个月中深入体验了这一系统,因此想分享一些个人见解。此外,我热衷于参与与WordPress相关的调查,这对我来说既是挑战也是机遇。以下是我对调查问题的思考与回答,经过整理后呈现给大家。

注意:本文主要面向开发者群体,可能不完全适用于所有读者。尽管我尽量使用通俗易懂的语言解释相关概念,但部分内容仍需具备一定的主题开发基础才能更好地理解。

### 开发经验

调查的第一个问题聚焦于开发者的经验。它询问了开发者构建区块主题或使用theme.json的实际情况,提供了四个选项和一个”其他”选项:
– 我已经构建并启动了区块主题
– 我已经尝试过构建区块主题
– 我已经探索了使用theme.json经典主题
– 我使用了一个区块主题,但我还没有构建一个

我选择了第一个选项,因为我已为家人和朋友构建了两个区块主题。这些是免费维护的个人网站,虽然简单但功能齐全。老实说,我需要考虑开始收费了。同时,我正在开发一个计划公开发布的主题。

### 开发历程

第二个问题探讨了开发者如何开始使用区块主题和theme.json。选项包括分叉现有主题、使用Empty Theme或从头开始。我在每个方向上都进行过尝试,但已记不清确切的起点。我的大部分工作基于2019年上一个项目的主题进行分叉,计划未来将其作为新主题免费发布。

我主要在等待以下功能的实现:
– 导航区块的完善
– Post Author区块的拆分
– 一组健壮的评论相关区块
– 发布特色图片区块以提供尺寸选项

如果这些功能能尽快落地,我想我的主题今天就可以发布自担风险测试版。

### 模板与模板部件

调查询问了主题开发者通常在基于区块的主题中包含哪些模板和模板部件。我填写了一个自由格式的评论栏——踏上肥皂盒……

我对区块模板有着复杂的情感。HTML模板的静态特性让我怀念主题开发不那么复杂的简单时代。然而,在动态系统中也存在问题。我不记得上次使用多个顶级模板构建传统PHP主题是什么时候:index.php。动态部分一直是事物的核心,它们是模板部分。使用PHP,我们可以轻松设置变量或使用函数调用来加载当前页面所需的模板部分。

区块模板系统则不同,它本质上迫使开发人员打破”不要重复自己” (DRY) 原则。例如,如果设计师想要为页面和文章显示不同的标题模板部分,传统主题只需创建header-page.php或header-post.php。但在区块模板系统中,他们必须创建两个顶级模板single.html(post) 和page.html来完成相同任务。这是”坏事”,因为主题作者必须在每个顶级模板中复制所有其他代码,无法根据上下文加载不同的模板部件。

在回答这个问题时,我表示出于需要,我使用了几乎所有可能的顶级模板。我还列出了我最常用的模板部分(按层次结构细分):
– 标题
– 内容– 循环– 侧边栏
– 页脚

在content-*.html和loop-*.html模板部分是最常变化的。

### 颜色定义

调查的下一部分询问主题作者如何在theme.json中定义颜色。令人惊讶的是,命名颜色可能是主题世界中最具争议的话题之一。唯一公认的两件事是”背景”和”前景”颜色。Morten Rand-Hendriksen在2018年创建了一个讨论工单,旨在标准化主题颜色命名方案,解决系统中颜色的slug问题。一旦用户使用预设颜色,slug就会被硬编码到内容中。切换到具有不同slug的主题时,旧颜色会消失,不会自动更改为新主题的颜色。

我使用的语义命名方法与Tailwind CSS框架的着色系统非常相似。例如red-medium,我会使用primary-500(语义)而不是描述性名称。语义方法允许主题作者定义一组颜色,每次用户切换主题时都会自动更新这些颜色。当然,其他学派也各执一词,即使每个喜欢语义命名的人也不会在同一个系统上达成一致。我在最近的GitHub票证中更详细地描述了我的方法,并提供了theme.jsonGist供他人参考。

### 其他theme.json设置

除了颜色和排版之外,调查还询问了作者使用的其他设置。我通常使用所有可用选项——如果有选项,我会定义它。WordPress当前没有预设的一个用例是全局间距。大多数主题作者对区块和元素之间的空白使用单个值,也常用于默认的垂直和水平填充。我不确定是否需要预设,因为不知道WordPress将如何使用它。这是其他人所要求的,几乎无处不在。围绕它定义完整系统可能会让人头疼,但我仍然希望看到关于至少实现标准全局间距预设的讨论。

### 每个区块设置和样式

调查的这个部分是一个是/否问题,询问主题作者是否在他们的theme.json文件中包含每个区块的设置或样式。我在可选评论部分留下了更多想法。

在设置方面,我对系统感到满意,它允许定义全局或基于每个区块启用哪些功能。但我不太热衷于通过theme.json编写CSS。本质上我们正在处理的内容,在很多层面上都感觉不对。目前,它仅限于几种可配置的样式,因此仍需深入研究实际CSS文件。这是有问题的,因为主题的一半CSS代码被划分为theme.json一个单独的CSS文件。从开发角度,这使代码库更难维护。最初,我尝试通过theme.json定义样式,但后来将它们移回CSS文件。感觉更自然,而且能使用我习惯的所有工具。现在,我无法想象会搬回去的场景。除了节省几个字节的代码之外,我还没看到通过JSON为大多数事物添加样式有什么好处。也许未来会改变,我会成为皈依者。目前,我主要坚持使用CSS。

### 其他反馈:PHP层

我之前提到过,但值得重复。对于theme.json配置系统,我们需要一个PHP层。目前有一个公开讨论工单。这种系统有两个主要好处:
1. 对于传统主题开发人员来说,拥有用于拼凑配置的PHP API会更自然。这被视为核心/Gutenberg开发人员的一种诚意表现,认识到许多主题作者将通过熟悉的编程语言更容易地进入FSE功能。
2. 如果有一种简单的方法可以连接到主题JSON系统并覆盖内容,那么将有无数插件想法可以扩展全局样式、站点编辑等。一个简单的过滤器钩子可以让这一切变得轻松。

文章网址:https://www.wpbull.com/chajian/24968.html