WordPress 块编辑器功能强大,可以处理许多不同的布局和设计方案。然而,在构建主题时,你必须记住,并非所有用户都是熟练的设计师,甚至可能对拼凑自己的布局不感兴趣。这就是起始模式对他们有益的地方。
WordPress 支持两种类型的起始模式,用于页面(或任何文章类型)和模板。此功能允许您为您的主题用户创建起点,以便他们可以用最小的技能构建页面和模板。
起始页面模式
页面模式允许您创建自定义模式,您的主题用户在通过 WordPress 后台的页面 > 添加新页面添加新页面时可以访问这些模式。从那里,将弹出一个模态框,如果已注册任何模式,则向他们显示模式的选项。
这是使用默认 Twenty Twenty-Four 主题安装时创建新页面的屏幕外观:

这是一个强大的功能,因为这意味着您可以为您的主题用户或客户提供设计精良的起点。他们不需要从头开始构建。他们只需要选择一个模式,它会自动插入内容区域。从那里,他们可以对其进行任何自定义。
如何创建页面模式
从技术上讲,您主题中的任何模式都可以转换为页面模式。您需要做的就是定义正确的参数以将其标记为页面模式。正如在注册模式中所述,有两个可用的文件头字段,您必须设置它们才能实现此操作:
块类型: 将core/post-content添加为模式的块类型之一,告诉 WordPress 该模式应用作文章内容。文章类型: 您可以添加一个或多个文章类型(用逗号分隔)来连接模式。
结合这两个字段,您就创建了起始页面模式。这是虚构的 /patterns/example-page.php 模式文件的文件头外观:
<?php
/**
* Title: Example Page
* Slug: themeslug/example-page
* Categories: page
* Block Types: core/post-content
* Post Types: page
* Viewport width: 1376
*/
?>
<!-- Block code here. -->这实际上就是您必须做的全部。定义模式的 块类型 和 文章类型 参数,您就有了起始页面模式。
这将适用于任何已选择使用块编辑器的文章类型,包括默认的 post 和 page 文章类型。
由于页面模式实际上与内容绑定,因此您通常不会在此处包含诸如站点页眉或页脚之类的内容。该模式作为文章内容输出。
起始模板模式
与页面模式一样,模板模式在构建新模板时为用户提供起点。不同之处在于,模板模式来自站点编辑器。
如果您访问 WordPress 后台的外观 > 编辑器 > 模板并单击创建新模板的+图标按钮,您应该看到一个新的添加模板模态框:

从那里,您可以选择要创建的模板。如果模板类型已为其注册任何模式,则会出现一个新的选择模式模态框,覆盖模板编辑界面。
例如,当使用默认 Twenty Twenty-Four 主题选择首页选项时,您将看到以下内容:

这为您的主题用户提供了构建模板的真正不错的入门途径。这意味着他们不必从头开始创建所有内容,并且可以沿着正确的路径开始。
如何创建模板类型模式
与页面模式不同,您通常不会将任何模式设置为模板模式。这些是整个模板的起点,因此其用例更加有限和具体。
由于模板模式代表整个模板,因此您通常会包含全局元素,如页眉、页脚、侧边栏以及您的主题模板显示的其他部分。
正如在注册模式中指出的那样,您的模板模式需要一个必需的单个头字段(和一个可选字段):
模板类型: 一个或多个模板类型,用逗号分隔,模式应与之关联。插入器: (可选) 通常,您不希望模板模式可通过插入器使用。要禁用此功能,将其设置为no或false。
假设您创建了一个适用于首页或主页模板的模式。这是虚构的 /patterns/home-template.php 文件的外观:
<?php
/**
* Title: Home Template
* Slug: themeslug/home-template
* Template Types: front-page, home
* Viewport width: 1376
* Inserter: no
*/
?>
<!-- Block code here. -->从那时起,任何用户尝试从 WordPress 站点编辑器创建新首页或主页模板时,都会以您的模板模式作为起点。
支持的模板类型
以下列表包括您可以通过 模板类型 字段定义的模板,但您可以始终参考模板层次结构文档以获取模板的完整概述:
indexhomefront-pagesingularsinglepagearchiveauthorcategorytaxonomydatetagattachmentsearchprivacy-policy404
在模板中使用模板模式
创建自定义模板模式时,也有意义在您的模板中重用这些模式。为什么要重写代码?
想象一下,您创建了一个既可作为主页和索引模板使用的模板模式。它将如下所示:
<?php
/**
* Title: Index Template
* Slug: themeslug/index-template
* Template Types: home, index
* Viewport width: 1376
* Inserter: no
*/
?>
<!-- Block code here. -->现在假设您在主题中包含了一个 /templates/index.html 模板。与其在两个地方添加代码,您可以简单地从模板文件中调用模式:
<!-- wp:pattern {"slug":"themeslug/index-template"} /-->要了解有关在模板中包含模式的更多信息,请查看模板中的用法文档。