博客

防客户误操作的站点编辑器:theme.json 实战手册

利用 theme.json 为 WordPress 站点编辑器划定界限,让客户在编辑内容的同时不破坏您的设计。

摘要

当客户第一次打开 WordPress 站点编辑器时,能编辑每个区块、颜色和布局的能力对他们来说可能像是一个功能——而对您来说却像是一个威胁。本文解释了如何使用 theme.json 在内容编辑和设计控制之间划定清晰的界限。无需对抗站点编辑器,您可以设置预设、默认值和边界,让非技术客户能够安全地更新自己的网站。我们将深入探讨哪些内容需要锁定、哪些应保持开放,以及为什么过度锁定是一个真实的风险。该方法围绕设计令牌和模板级约束构建,因此能在您维护的每个客户站点上保持一致。到文末,您将拥有一个可重复的工作流程,既能将站点编辑器交给客户,又不会交出设计系统的“钥匙”。

当客户发邮件说他们“只是试着更新了标题”,而整个网站的间距都塌了时,您做的第一件事是什么?

如果您维护不止一个 WordPress 站点,您可能以某种形式收到过这样的消息。站点编辑器给了您的客户一辆有五个挡位却没有刹车的汽车的钥匙。他们以为自己在做简单的文本更改,突然全局排版乱了,主页首屏出现了您没选的霓虹色,两个区块也从并排变成了堆叠。

与此同时,您还在想着自己支持的其他六个客户站点,而您最不需要的就是一个维护陷阱:每次客户“好心”的编辑都需要从备份中恢复。

答案不是移除站点编辑器,而是通过 theme.json 在其中设置边界。根据 WordPress 开发者资源,theme.json 是区块编辑器设置和样式的核心真相来源——它定义了呈现给客户的调色板、排版和布局选项。这意味着控制设计的同一个文件也可以控制您的客户能编辑什么、不能编辑什么。

让我们来看看如何思考这个问题,因为大多数教程都专注于 theme.json 能为开发者做什么。对于代理机构来说,问题不同:我们如何使用它让客户安全,同时又不会让他们感到束手束脚?

为什么站点编辑器让人感觉如此危险?

您的客户并不是想破坏网站。他们只是在做您多年来在旧编辑器中培训他们做的事情:更换标题、替换图片,或许添加一个段落。危险不在于他们的意图——而在于站点编辑器将全局控件和内容控件放在了同一个位置。

这是一个常见场景:客户在站点编辑器中打开一个模板,看到一个标题区块。他们更改其颜色以匹配新的品牌色板。但由于该标题位于模板中,此更改会应用到所有使用该模板的地方。对客户来说,这看起来是一次编辑;对网站来说,这是一个全局更改。

一般原则:当你把页面构建器交给别人时,他们最终会找到“带护栏的设置”并将其关闭。但使用 theme.json,你可以隐藏护栏本身。与其告诉客户“不要动全局样式”,不如根本不向他们显示可能产生不良结果的调色板。你定义一个经过批准的颜色调色板、一套字号比例和一组间距预设——客户从这些选项中选择,而不是从整个 CSS 光谱中选择。

这是第一个转变:不要想规则,而要想工厂。theme.json 就是你的生产线。你配置客户看到的选项,约束由界面本身强制执行,而不是由交接文档中的一组说明来强制执行。

你究竟应该锁定什么?

不是全部。如果你把内容区域锁得太紧,客户要么每次需要添加段落时都给你打电话,要么会找到绕过你的方法——通常是添加一次性插件或从旧网站复制 HTML。

这里有一个实用表格,列出锁定什么、保留什么以及原因:

编辑界面是否锁定?原因
模板结构和区块布局锁定防止意外删除或重新排列核心布局区块
全局样式(颜色、字体、间距预设)使用预设锁定客户从批准的集合中选择,而不是任意值
内容文本和图片保持开放这是他们的工作;让他们无需获得许可即可完成
区块之间的间距部分锁定提供间距预设,让他们可以调整节奏而不破坏对齐
精心策划的区块模式如果经过审核则保持开放让客户安全地添加新板块,而无需从头开始构建

重要的细微差别在于“使用预设锁定”,而不是“锁定”。对于全局样式,你不是隐藏设置面板,而是将选项数量减少到经过策划的集合。对于模板结构,你可以锁定某些区块,使它们无法被删除,但仍允许客户编辑其中的文本。

提醒一句:锁定模板中的区块与锁定特定页面中的区块是不同的。模板锁会影响所有使用该模板的内容。如果你需要在不同页面上使用不同的锁定级别,则需要在编辑器内处理区块级别,这更加脆弱。对于可重复的代理工作,请设计模板,使锁定区域保持一致。

如何设置边界,又不会让编辑器感觉像陷阱?

技巧是在 theme.json 中定义你的设计令牌,然后拒绝在 CSS 中做任何其他事情。

例如,与其让客户在按钮上设置任意颜色,不如在 theme.json 中定义一种使用调色板中特定颜色的按钮样式。客户仍然可以选择按钮并更改其文本,但颜色选择器只显示你批准的色板。字体大小、行高和间距也是如此。

同样的原则也适用于模板。你可以在模板内的特定区块上使用“锁定”功能——例如,锁定推荐区块的列结构,让客户可以更改引用文本,但不能把三列变成两列。如果你还没有使用过区块锁定,它就在编辑器工具栏中;当你锁定一个区块时,你可以选择客户是否可以编辑内容、移动内容,或两者兼而有之。你甚至可以在 theme.json 中为区块级默认设置应用此功能。

你的目标是让客户永远看不到一个可能破坏设计的控件。这并不意味着他们不会做错任何事;而是说他们能做的最糟糕的错事就是改变标题的措辞,而不是整个网站的外观。

如果你使用自定义文章类型,同样的原则也适用于默认模板之外——请参阅我们的指南:扩展 theme.json 以支持自定义文章类型和插件输出

锁太多会发生什么?

这里有一个反直觉的观点:过度锁定和锁定不足一样有害。一个无法调整标题大小或在板块之间添加间距的客户,最终会要求你“把它弄好看”——然后你又开始免费做小改动。更糟糕的是,他们可能会认为站点编辑器没用,重新使用第三方页面构建器,这再次给了他们过多的控制权。

权衡是真实存在的。锁定严格的编辑器会减少紧急电话,但也会产生更多“你能把这个按钮往上移五像素吗”的请求。开放宽松的编辑器则相反。你的工作是为每个客户找到平衡点,而不是普遍应用一种配置。

一个好的起点启发式:锁定影响所有实例的内容(全局样式、模板结构),保留开放只影响一个实例的内容(单个页面的文本和图片)。如果客户破坏了单个页面,修复只需 5 分钟。如果他们破坏了全局样式,修复需要 20 分钟,并且涉及安全问题。

如何让这在多个客户间可重复?

这就是代理工作流程的用武之地。你应该有一个基础的 theme.json,定义你的设计令牌——调色板、排版比例和间距预设——然后为每个客户提供覆盖文件,以扩展或更改特定值。

首先创建一个“入门”块主题。这里介绍了如何使用 theme.json 构建自定义块主题——一旦你开发并记录好它,将其复制到新客户只需替换品牌颜色和字体。你不是在重新发明轮子,而是在替换令牌。这正是停止重建每个 WordPress 网站的理念,但应用于编辑器而非后台。

由于 theme.json 是一个单一文件,因此也易于进行版本控制并跨多个环境部署。你可以审查更改,查看客户在全局样式中修改了什么,并将这些更改与基础文件进行差异比较。这为支持请求提供了强大的审计跟踪。

如果你维护多个网站,并且还没有设置基础主题,那么这就是你的机会。这是自定义 WordPress 工作中唯一一件每次客户打开编辑器都能收回成本的事情。

对于那些不断要求“再来一种颜色”的客户呢?

你的调色板是一个承诺。如果你定义了五种品牌颜色,而客户要求第六种,答案不是“不”——而是“可以,但它是作为对调色板的有意补充,而不是标题中一次性使用的十六进制色码。”当你向 theme.json 添加一种颜色时,它就会在整个网站中一致地可用。这才是处理这些请求的正确方式。

这也是你需要与客户沟通的地方。向他们解释,站点编辑器只显示符合其品牌标准的颜色和字体。如果他们想扩展这些标准,你会在设计系统中处理,然后每个新颜色都会在任何地方可用——包括他们尚未构建的未来页面。这比“我们不这么做”要好得多。

同时,不要积累一个包含四十种颜色的调色板。每季度重新审视一次,删除任何一次性意外添加的颜色。目标是打造一个小而精的选项集合。

如果你锁定布局但保留内容,并让调色板成为客户关系的一部分,站点编辑器就不再是威胁。它成为一种方式,让你真正赋予客户自主权,同时又不牺牲你受雇保护的设计标准。

Sources (5)