本资源旨在为需要更新内容的人员提供指导,无论是针对主题的模板、图案还是整个站点的块。由于每种内容类型允许或禁止某些类型的同步,因此在创建之前了解可能性对于未来的维护至关重要。

管理更新的建议

尽早确定您预期需要更新的内容

从高层来看,重要的是认识到并非所有内容都可以在整个站点上进行更新,并且创建方法对可能性有很大影响。因此,在创建之前花时间确定您预期需要更新的内容并将其置于适当的格式中至关重要。这将对未来的维护产生巨大影响。

拥抱块级别的主题设计

块级主题设计需要从以前通过更新控制大型主题部分的设计方法转变思维方式。虽然在设计自定义主题项目时,对设计的整体视图仍然很重要,但块要求设计师以更原子的方式处理设计。这意味着从块本身开始,通常通过 theme.json 自定义进行调整。目标是每个单独的“原子”(即块)可以移动、编辑、删除并重新组合,而不会导致整个设计崩溃。

您越是在块级别处理设计,就越不需要将更新传播到整个站点的图案和模板等事物上。如果原子部件到位,它们的布局就不重要。

内容类型(以及如何正确更新它们)

块

如何管理块更新取决于块本身的性质。如果块依赖于外部数据,那么从一开始就使用 render_callback 函数使其动态化通常是一个更好的选择,因为它提供了更多的控制。如果预期块的结构会随时间变化,那么从使用 save() 方法定义默认输出的静态块开始是推荐的方法。随着时间的推移,可以混合使用并包含 render_callback,该回调可以使用来自 save 的输出作为后备,同时处理替代输出。请记住,这种灵活性和控制是以渲染期间额外处理为代价的。另一种选择是使用依赖通过 块弃用 管理更新的静态块。这将需要您手动更新现有块。根据您的需求和舒适度,两种方法都可以工作。要开始创建块并节省时间,您可以使用创建块工具。

图案

对于您希望稍后更新的内容,不要使用图案,而是依赖可重用块或模板部分。 在您将图案插入站点后无法对其进行更新。作为背景,您可以将图案视为更像示例/示例/启动内容。虽然 Inserter 中显示的图案可能会随时间演变,但这些更改不会自动应用于任何当前使用的图案。一旦插入,图案就与原始图案完全分离,不同于可重用块或模板部分块。

如果需要,对于具有自定义样式的图案的一种潜在解决方法是为图案的包装块添加类名。例如,以下操作向组块添加了 themeslug-special 类:

<!-- wp:group {"className":"themeslug-special"} -->
<div class="wp-block-group themeslug-special">
    <!-- Nested pattern blocks -->
</div>
<!-- /wp:group -->

这并非万无一失,因为用户可以通过编辑器 UI 修改类。然而,由于此设置位于“高级”面板下,因此在大多数情况下可能会保持完整。这为某些图案类型的主题作者提供了一些 CSS 控制,允许他们更新现有使用。然而,它并不能防止用户进行无法更新的重大更改。

同步图案

顾名思义,这些图案在您的站点上固有地同步。请记住,目前依赖同步图案来处理某些更新存在一些限制,因为当发生更新时,内容、HTML 结构和样式都将保持同步。如果您需要更多的细微差别,这是一个需要考虑的关键要素,动态块可能是更好的方法。

模板部分和模板

由于块主题允许用户直接编辑模板和模板部分,因此需要根据给予用户的更大访问权限调整如何管理更改。作为背景,当用户更改模板或模板部分时,来自主题更新的更新模板不会显示给用户。只有新使用该主题的用户或尚未编辑模板的用户才会体验更新的模板。如果用户没有修改文件,那么您在文件系统上所做的更改将反映在用户的站点上——您只需更新文件,他们就会获得更改。然而,如果他们对其模板进行了更改,那么您更新其模板的唯一方法是:

  • 还原他们的所有更改
  • 更新数据库中的模板和模板部分

一般来说,如果用户对模板进行了更改,则建议保留模板不变,除非与用户达成一致(例如在代理机构设置中)。

在更新模板时需要注意的一点是插入对新或不同模板部分的引用。例如,templates/page.html 模板可能在版本 1.0 中插入 parts/header.html 部分,但在版本 2.0 中将此引用更改为 parts/header-alt.html。一些开发人员可能会认为这是用户修改原始 header.html 时的“解决方法”。然而,这很可能会破坏用户的自定义设计,因为 page.html 模板将不再引用正确的部分,除非他们也修改并保存了页面模板。

同样,在主题更新中删除模板部分通常是不好的做法。在这种情况下,用户可以创建包含对部分的调用的自定义顶级模板,并希望其继续存在。

资源