如何创建古腾堡模板
已发表: 2018-12-14使用 Gutenberg Blocks 构建页面和帖子的优势之一是能够将它们保存为模板。 为古腾堡创建模板是帮助加快发布过程的好方法。 有几种方法可以创建它们。 在本文中,我们将看到如何创建古腾堡模板。
我们将介绍创建它们的三种方法:
- 创建一个布局以添加到您的古腾堡库以导出或克隆。
- 创建布局以在您想要使用它时进行复制和粘贴。
- 创建布局以添加为页面、帖子或自定义帖子类型的默认布局。
这些方法让我们只重用块。 不会包含其他设置。
为什么要创建古腾堡模板
设计页面或帖子布局后,您可以保存块列表及其属性以供重复使用。 这让您在创建内容方面领先一步,因为您不必专注于布局。 块模板允许您拥有一致的设计。
块模板可以包含占位符内容。 它们可以是静态的或动态的。 您可以定义编辑器会话的默认状态。 您甚至可以将模板导入或导出为 JSON 文件,这样您就可以在多个网站上重复使用您的设计或与他人共享。 您可以锁定它们,以便用户可以添加内容但不能更改块。
方法 1:创建布局模板
布局模板让您可以使用最初添加的多选功能,让我们可以同时移动或删除多个块。

我们可以一次选择一个或多个块并将其添加到我们的全局可重用块库中。 这使得将它们导出为 JSON 文件变得容易。
示例布局模板

我创建了一个简单的布局,我可以将其用作博客文章、产品评论等。很容易将其保存到库中以重复使用。

将光标放在要包含的第一个块上,然后将鼠标拖动到最后一个块以突出显示它们。

在第一个块上方,您会看到左侧的三个点。 单击圆点并选择Add to Reusable Blocks 。

顶部的绿色消息栏将显示该块已创建。 为布局指定一个对您有意义的名称,然后选择Save 。

绿色栏中的消息将显示该块已更新。 您已经创建了布局!

要使用它,请创建一个新页面或发布并打开选项(三个点)。 在工具下,选择管理所有可重用块。

这将显示所有块的列表。 在这里,您可以将块导出和导入为 JSON 文件。 可重用块是全局的。 如果您编辑,那么您将编辑原始文件。 为了保留原始帖子并使用布局创建新帖子,您需要将其导出、重命名并导入布局。
重复的帖子

幸运的是,我们还有另一种选择。 一个名为 Duplicate Post 的插件为 Gutenberg 块添加了克隆功能。

在Duplicate Posts 设置中,启用Blocks 。

我现在在 Blocks 库中有一个克隆选项。 克隆您想要的布局,然后进行编辑。 每个布局都是全局的,因此每次要使用布局时都必须进行克隆和编辑。
方法 2:创建古腾堡模板的简单替代方法

这种方法只是一个简单的作弊方法,但确实有效。 首先,创建一个您想要重复使用的布局,包括任何占位符内容。

接下来,切换到代码编辑器。 为此,请选择右上角的三个点。 在编辑器下,选择代码编辑器。

突出显示并复制代码。

将代码粘贴到文本编辑器中并保存以供重复使用。

当您准备好使用模板时,只需创建一个新帖子,切换到代码编辑器,然后粘贴代码。


我现在有一个新帖子,我可以开始向其中添加内容。
方法 3:创建自定义帖子类型
块模板是一个参数。 您可以将参数添加到页面和帖子中,也可以创建新的帖子类型。 布局将与该帖子类型相关联,因此当您创建该帖子类型时,默认情况下会显示布局。
这非常适合为不同类型的文章创建布局。 例如,您可以拥有产品评论帖子类型、假期摘要帖子类型、食谱帖子类型等,当您加载帖子类型时,它会自动为您提供与之关联的布局。
创建模板包括:
- 动态设置默认状态。
- 将其注册为特定帖子类型的默认布局。
声明模板
模板本身将被声明为一个块类型数组。 这是在 JavaScript 或 PHP 中完成的。 正如古腾堡开发人员手册所示,它看起来像这样:
const template = [
[ 'block/name', {} ], // [ blockName, attributes ]
];或这个:
'template' => array( array( 'block/name' ), ),
在自定义帖子类型中注册模板
自定义帖子类型也可以注册模板。 它可能看起来像这样:
function myplugin_register_book_post_type() {
$args = array(
'public' => true,
'label' => 'Books',
'show_in_rest' => true,
'template' => array(
array( 'core/image', array(
'align' => 'left',
) ),
array( 'core/heading', array(
'placeholder' => 'Add Author...',
) ),
array( 'core/paragraph', array(
'placeholder' => 'Add Description...',
) ),
),
);
register_post_type( 'book', $args );
}
add_action( 'init', 'myplugin_register_book_post_type' );该数组标识块的来源和块的名称。 在此示例中,数组使用“核心/段落”。 这意味着该块来自 WordPress 核心(而不是插件),并将其命名为段落(标识要使用的块)。
在页面和帖子中注册模板
如果您将模板添加到页面或帖子,它会在您每次创建页面或帖子时自动加载。 我更喜欢将它们添加到特定的自定义帖子类型,因为您有更多的创作自由,并且通过使模板更容易找到来简化内容创建过程。
如果您决定将它们添加到页面或帖子中,您可以使用以下代码:
function my_add_template_to_posts() {
$post_type_object = get_post_type_object( 'post' );
$post_type_object->template = array(
array( 'core/paragraph', array(
'placeholder' => 'Add Description...',
) ),
);
$post_type_object->template_lock = 'all';
}
add_action( 'init', 'my_add_template_to_posts' );嵌套模板
您甚至可以在 Container 块(例如,列块)中嵌套模板。 这是通过为块本身分配嵌套模板来完成的。 例如:
$template = array( array( 'core/paragraph', array( 'placeholder' => 'Add a root-level paragraph', ) ), array( 'core/columns', array(), array( array( 'core/column', array(), array( array( 'core/image', array() ), ) ), array( 'core/column', array(), array( array( 'core/paragraph', array( 'placeholder' => 'Add a inner paragraph' ) ), ) ), ) ) );
锁定模板
您可以使用以下代码锁定模板:
'template_lock' => 'all', // or 'insert' to allow moving
具有自定义帖子类型的示例模板
我想创建我们在上面看到的名为 Books 的自定义帖子类型。 它将显示布局模板并包括图像、标题和段落。
代码将被粘贴到functions.php 文件中。 向 PHP 文件添加代码时,始终使用子主题。 如果不这样做,当您更新主题时,代码将被覆盖。

您必须手动编写代码(我建议使用我展示的代码示例)。 一种选择是创建您想要的布局,然后查看代码(单击右上角的三个点,然后在“编辑器”部分中选择“代码编辑器”)。 这将显示您已经制作的布局中的块及其属性,以便您可以提前知道如何在代码中排列块。

进入主题函数(functions.php) 并粘贴代码。 我在最底部粘贴了代码。 这是一个测试站点,我不打算保留代码,所以我没有使用子主题。

一个新的帖子类型被添加到名为 Books 的仪表板菜单中。 它包括一个列表和一个添加新链接。 我点击了新增,我的新模板被添加到编辑器中,我可以简单地开始添加内容。
这些块按照它们在代码中出现的顺序放置,并包括它们被分配的属性。 您可以在代码中放置任意数量的块,并为它们提供所需的任何属性。 您可以根据需要创建任意数量的自定义帖子类型,并且每个类型都可以具有唯一的默认布局。 此示例包含占位符文本。
结束的想法
这就是我们对如何创建古腾堡模板的看法。 这三种方法都很好用。 如果您不想创建新的自定义帖子类型,可重用模板或其中一种复制方法可能是更好的选择。 我喜欢自定义帖子类型,因为它可以轻松选择要创建的内容类型,并且模板已为您预先排序。
如果您对代码感到满意,并且它们在 WordPress 中使用起来最方便,那么自定义帖子类型很容易制作。 创建模板以添加到您的functions.php 的主要缺点是您在代码中而不是在Gutenberg 编辑器中创建布局,因此它不是可视化的。
我喜欢您可以将预制内容添加到模板中。 这对于占位符文本来说非常有用,可以向贡献者显示信息的去向。 可重复使用的模板是加速和简化工作流程的好方法,也是创建页面和帖子布局进行共享的好方法。
我们希望听到您的意见。 已经创建了古腾堡模板? 在下面的评论中让我们知道您的体验。
精选图片来自 Nadia Snopek / shutterstock.com
