模板

块模板定义为块项列表。这些块可以具有预定义的属性、占位符内容,也可以是静态或动态的。块模板允许为编辑器会话指定默认的初始状态。

模板的范围包括:

  • 在客户端上动态设置默认状态。(比如默认块)
  • 注册为给定帖子类型的默认值。

计划增加:

  • 以“页面模板”的形式保存并分配给页面。
  • 定义于模板.php文件或从自定义帖子类型中提取(wp_模板)这是特定于站点的。
  • 作为主题层次结构的等价物。

API程序

模板可以在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;常量块模板=[['核心/图像',{}],[“核心/段落”,{占位符:“图像详细信息”}],];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”=>“添加作者…”,) ),数组(“核心/段落”,数组(“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区域中设置,则使用父InnerBlock区域的锁定。如果块是顶级块,则使用当前桩类型的锁定配置。

单独闭锁

除了模板级锁定之外,您还可以锁定各个块;您可以使用属性级别的属性。块级锁优先于模板锁定功能。目前,您可以锁定移动和删除块。

属性:{//防止移动或移除块。锁定:{删除:true,移动:真的,}}

选项:

  • 去除-锁定块的移除能力。
  • 移动-锁定阻止块移动的功能。

你可以用这个模板锁定要锁定除单个块以外的所有块,请使用在里面去除移动.

$template=数组(数组(“核心/图像”,数组(“align”=>“left”,) ),数组(“核心/标题”,数组(“placeholder”=>“添加作者…”,) ),//允许移动或删除段落块。数组(“核心/段落”,数组(“placeholder”=>“添加说明…”,“lock”=>数组(“移动”=>false,“删除”=>false,),) ),);

嵌套的模板

像列块这样的容器块也支持模板。这是通过将嵌套模板指定给块来实现的。

$template=数组(数组(“核心/段落”,数组(“placeholder”=>“添加根级段落”,) ),数组(“core/columns”,array(),array(数组('core/column',array(),array(数组('core/image',array()),) ),数组('core/column',array(),array(数组(“核心/段落”,数组(“placeholder”=>“添加内部段落”) ),) ),) ));