块模板定义为块项列表。这些块可以具有预定义的属性、占位符内容,也可以是静态或动态的。块模板允许指定编辑器会话的默认初始状态。
模板的范围包括:
- 在客户端上动态设置默认状态。(比如
默认块
)
- 注册为给定帖子类型的默认值。
计划新增:
- 以“页面模板”的形式保存并分配给页面。
- 定义于
模板.php
文件或从自定义帖子类型中提取(wp_模板
)这是特定于站点的。
- 作为主题层次结构的等价物。
模板可以在JS或PHP中声明为块类型数组(块名称和可选属性)。
PHP中的第一个示例为帖子创建了一个模板,其中包含一个要开始的图像块,您可以根据需要向模板中添加任意数量的块。
PHP示例:
<?php(电话)函数myplugin_register_template(){$post_type_object=获取post_type_对象(“post”);$post_type_object->模板=数组(数组(“核心/图像”),);}add_action('init','myplugin_register_template');
下面的JavaScript示例使用内部块和模板,插入时根据模板创建一组块。
const el=反应创建元素;const{registerBlockType}=wp.blocks;const{InnerBlocks}=wp.blockEditor;常量BLOCKS_TEMPLATE=[['核心/图像',{}],[“核心/段落”,{占位符:“图像详细信息”}],];registerBlockType('myplugin/template'{title:'我的模板块',类别:“小部件”,编辑:(道具)=>{return el(内部块{模板:BLOCKS_template,templateLock:false,} );},保存:(道具)=>{return el(InnerBlocks.Content,{});},} );
请参阅图元块教程有关正在使用的模板的完整示例。
要查找可以在模板中定义的所有块属性的综合列表,请参考块的块.json
文件,然后查看属性
和支架
值。
例如,包/block-library/src/heading/block.json显示块具有水平
属性,并支持锚
参数。
如果你没有安装古腾堡插件,你可以找到块.json
内部文件wp-includes/blocks/heading/block.json
.
自定义帖子类型可以在注册过程中注册自己的模板:
函数myplugin_register_book_post_type(){$args=阵列(“public”=>true,“label”=>“Books”,“show_in_rest”=>真,“template”=>数组(数组(“核心/图像”,数组(“align”=>“left”,) ),数组(“核心/标题”,数组(“placeholder”=>“添加作者…”,) ),数组(“核心/段落”,数组('占位符'=>'添加描述…',) ),),);register_post_type('book',$args);}add_action('init','myplugin_register_book_post_type');
有时,其目的可能是锁定UI上的模板,以便无法操作显示的块。这是通过一个模板_锁定
属性。
函数myplugin_register_template(){$post_type_object=获取post_type_对象(“post”);$post_type_object->模板=数组(数组(“核心/段落”,数组(“placeholder”=>“添加说明…”,) ),);$post_type_object->template_lock='all';}add_action('init','myplugin_register_template');
选项:
仅内容
-阻止所有操作。此外,没有内容的块类型将从列表视图中隐藏,并且无法在块列表中获得焦点。与其他锁类型不同,这不可由子锁覆盖。
全部的
-阻止所有操作。无法插入新块、移动现有块或删除块。
插入
-防止插入或删除块,但允许移动现有块。
锁定设置可以由InnerBlocks继承。如果模板锁定
未在InnerBlocks区域中设置,则使用父InnerBlocks区域的锁定。如果块是顶级块,则使用当前柱类型的锁定配置。
除了模板级锁定之外,您还可以锁定各个块;您可以使用锁
属性级别的属性。块级锁优先于模板锁定
功能。目前,您可以锁定移动和删除块。
属性:{//防止移动或移除块。锁定:{删除:true,移动:true,}}
选项:
去除
-锁定块不被删除的功能。
移动
-锁定块的移动能力。
你可以用这个模板锁定
使用以下命令锁定除单个块以外的所有块假
在里面去除
或移动
.
$template=数组(数组(“核心/图像”,数组(“align”=>“left”,) ),数组(“核心/标题”,数组(“placeholder”=>“添加作者…”,) ),//允许移动或删除段落块。数组(“核心/段落”,数组(“placeholder”=>“添加说明…”,“lock”=>数组(“移动”=>false,'remove'=>错误,),) ),);
像列块这样的容器块也支持模板。这是通过将嵌套模板指定给块来实现的。
$template=数组(数组(“核心/段落”,数组(“placeholder”=>“添加根级段落”,) ),数组(“core/columns”,array(),array(数组('core/column',array(),array(数组('core/image',array()),) ),数组('core/column',array(),array(数组(“核心/段落”,数组(“placeholder”=>“添加内部段落”) ),) ),) ));