WordPress 6.5推出了一项新功能:块绑定API(Block Bindings API)。这是一个让块编辑器更易用的工具,可以让你更简单地把各种数据加到网站的不同部分。这意味着你在编辑时,需要写的自定义代码会少很多。
什么是块绑定 API?
假如你有一个基本的块,在网页上需要用这个块显示一些特定来源的信息,比如文章的详细信息或者是一些自定义的PHP代码制定的规则。你怎么做呢?这里是让它变得简单明了的方法。
在以前的WordPress版本中,如果你想在网页上显示一些特别的信息,比如文章的额外详情或是一些由PHP逻辑定制的内容,你通常需要创建一个全新的自定义块。这个过程可能既复杂又耗时。
但是,从WordPress 6.5开始,情况就变得简单多了。有了块绑定API,你现在可以让已有的标准块,比如段落或标题,直接从不同的来源获取数据,而不需要自己动手制作一个全新的块。这意味着,你可以让一个段落块直接显示文章的元数据,或者让一个标题块展示由一个插件生成的PHP逻辑,所有这些都无需深入React编程、块注册或从零开始创建新的自定义块。
WordPress 6.5的块绑定API是一个重大更新,它让编辑器和块的扩展更加简单。实际上,这个新API已经被用来演示如何将文章的自定义字段链接到核心块。
进阶一点,你还可以使用这项功能来自定义块,并从你设定的特殊来源获取数据。
想要深入了解如何创建和使用块绑定,可以查看WordPress开发者博客上的介绍性教程。
块绑定如何工作?
概述
在我们深入了解如何使用块绑定API来链接到自定义数据源之前,我们会先简单解释一下这个API是怎么工作的。接着,我们会详细介绍如何把标准块连接到文章的自定义字段里。
下面是一个表格,展示了现在可以链接的块和它们的属性:
虽然现在能用这个新功能的块和属性还不多,但它们已经足够覆盖很多常见的需求。将来,计划将这个功能扩展到更多的核心块和自定义块上。
要使用块绑定,你需要设置一下,告诉WordPress使用特定的标记从你选择的数据源获取信息。一旦设置好,在网页前端显示时,就会使用这些数据源的逻辑来显示内容。
一旦一个属性被绑定,你就不能在编辑器中改动它了,并且编辑器会显示一个标志,告诉你这个属性已经与某个数据源连接了。
下面的示例,是如何通过内置自定义字段支持来利用它。
自定义字段
在块绑定API的第一版中,还没有一个直接的界面来链接属性到自定义字段。这意味着你需要手动进入Gutenberg的代码编辑器来添加特定的代码。
如果你想把支持的属性连接到文章的自定义字段,你可以按照以下的格式添加代码:
<!-- wp:paragraph {
"metadata":{
"bindings":{
"content":{
"source":"core/post-meta",
"args":{
"key":"book-genre"
}
}
}
}
} -->
<p></p>
<!-- /wp:paragraph -->
为了让这个功能正常工作,你需要在你的主题的functions.php文件或一个插件里添加一些代码,这样才能确保你的自定义字段已经成功地注册到文章元数据中。
register_meta(
'post',
'book-genre',
array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'default' => 'Default text field',
)
);
请记住,为了安全起见,你需要暂时将show_in_rest
属性设置为true
。
未来更多数据来源
支持文章元数据只是第一步。我们计划在WordPress 6.6中添加更多的数据来源,比如网站信息、用户信息和分类信息。
而且,块绑定API现在就已经能让你注册自己的数据来源了,这个功能和我们用来注册文章元数据的功能是一样的。
注册自定义源
概述
要创建新的块绑定数据源,你需要用到一个名为register_block_bindings_source()
的函数,下面是它的基本格式:
register_block_bindings_source(
string $source_name,
array $source_properties
);
要注册一个新的块绑定源,你可以使用两个参数:
- $source_name:这是你的自定义数据源的唯一标识符,格式应该是”命名空间/名称”。记得每个数据源都需要一个独一无二的命名空间。
- $source_properties:这是一个定义数据源特性的数组,包括:
- label:这是一个文本字符串,用来描述你的数据源,虽然目前这个标签在界面上还看不到。
- get_value_callback:这是一个PHP函数或闭包,会在块的绑定源需要用到数据时被调用。
- use_context(可选):这是一个数组,用来指定如果你的数据源需要额外的信息时(比如当前文章的ID),应该包含哪些内容。
当WordPress处理块并发现有自定义数据源需要加载时,它会调用get_value_callback
函数。这个函数的设置应该是这样的:
projectslug_bindings_callback(
array $source_args,
WP_Block $block_instance,
string $attribute_name
);
使用注册机制
在实践中,您可以使用以下注册函数来创建版权信息的简单绑定:
add_action( 'init', 'projectslug_register_block_bindings' );
function projectslug_register_block_bindings() {
register_block_bindings_source( 'projectslug/copyright', array(
'label' => __( 'Copyright', 'projectslug' ),
'get_value_callback' => 'projectslug_copyright_binding'
) );
}
function projectslug_copyright_binding() {
return '© ' . date( 'Y' );
}
下面是一个例子,展示了如何把一个段落块链接到版权信息的数据源,并且展示了它在网站前端的样子:
<!-- wp:paragraph {
"metadata":{
"bindings":{
"content":{
"source":"projectslug/copyright"
}
}
}
} -->
<p>Copyright Block</p>
<!-- /wp:paragraph -->
当然,这只是一个基本的例子。你可以使用函数中的其他参数来构建更复杂的功能。
其他API函数
此外,目前还有其他一些函数是公开可用的:
- unregister_block_bindings_source($source_name):用来取消注册已经设置的数据源。
- get_all_registered_block_bindings_sources():用来获取所有已经注册的数据源的列表。
- get_block_bindings_source($source_name):用来获取具体的已注册数据源的详细信息。
还要注意,虽然核心数据源可以在编辑器的用户界面中使用,但编辑器的这些API目前仍是私有的。这意味着,我们还在讨论如何在用户界面中标准化使用这些功能。
因此,如果你想要一个易于使用的界面来处理自定义字段,你现在需要自己来开发这个功能。
进一步学习和后续步骤
想要在你的项目里使用块绑定获得更多灵感吗?看看block-bindings.php
文件中的注册代码和内置的core/post-meta
数据源,同时也不要错过我们的块绑定入门教程系列。
块绑定还处于初级阶段,未来我们计划实现以下功能:
- 允许直接在用户界面中编辑元字段值。
- 在编辑器中添加功能,使用户能够轻松添加绑定。
- 引入新的内置数据源,包括站点数据、文章数据和分类数据。
- 扩展对更多核心块的支持。
- 提供开发人员扩展编辑器用户界面的工具。
我们非常欢迎大家的反馈!你可以通过Github或WordPress Slack与我们分享你的想法和使用案例,来帮助我们共同完善块绑定API。
暂无评论内容