块锁定API

块锁定API允许您在编辑器中限制特定块上的操作。此API可用于防止用户移动、删除或编辑某些块,从而确保布局一致性和内容完整性。

锁定移动或移除特定块的功能

用户可以通过编辑器锁定和解锁块。锁定UI具有防止块在内容画布中移动或移除的选项:

锁定界面图片

请记住,您可以通过启用“应用于包含块内的所有块”选项,将锁定选项应用于嵌套在包含块内部的块。但是,不能以其他方式对块进行质量锁定。

锁定编辑某些块的功能

除了锁定移动或移除块的功能外导航块可重复使用块还有一个附加功能:锁定编辑块内容的功能。这将锁定对任一块类型内的任何块进行更改的功能。

将块锁定应用于图案或模板

在构建模式或模板时,主题作者可以使用这些相同的UI工具来设置块的默认锁定状态。例如,主题作者可以锁定标题的各个部分。请记住,默认情况下,具有编辑权限的用户可以解锁这些块。下面是一个模式示例不同的区块以不同的方式锁定,这里有更多的上下文使用锁定的块创建模板。在遵循用于注册的文档.

在模式或模板中应用仅内容编辑

WordPress 6.1中引入了此功能。与块锁定(禁用移动或删除块的功能)相反,仅内容编辑既设计用于模式或模板级别,又隐藏所有设计工具,同时还允许编辑块的内容。这为简化用户界面和保留设计提供了一种很好的方法。添加此选项后,将发生以下更改:

  • 非内容子块(容器、分隔符、列等)在列表视图中隐藏,在画布上不可单击,并且完全不可编辑。
  • 检查器将显示所有子“内容”块的列表。单击此列表中的块将显示其设置面板。
  • 主列表视图仅显示内容块,无论实际嵌套如何,都处于同一级别。
  • 整个内容锁定容器中的子块将自动移动/移除锁定。
  • 无法插入其他子块,从而进一步保留了设计和布局。
  • 块工具栏中有一个指向“修改”的链接,用户可以打开/关闭该链接以访问更广泛的设计工具。目前,不可能以编程方式删除此选项。

此选项可以应用于Columns、Cover和Group块,以及在其block.json中具有templateLock属性的第三方块。要采用此功能,您需要使用“templateLock”:“contentOnly”.下面是一个模式示例具有此功能。有关更多信息,请审查相关文件.

注意:没有用于管理内容锁定的UI,必须在代码级别进行管理。

更改权限以控制锁定功能

机构和插件作者可以通过限制用户的锁定和解锁块的权限。默认情况下,任何管理员都有权锁定和解锁块。

开发人员可以向块编辑器设置全部钩子用于配置锁定块的权限。钩子将两个参数传递给回调函数:

  • $设置–编辑器的可配置设置数组。
  • $上下文–的一个实例WP块编辑器上下文,一个包含当前编辑器信息的对象。

具体来说,开发人员可以更改$设置['canLockBlocks']通过将其设置为真的通常通过运行一个或多个条件检查。

以下示例在编辑页面时禁用所有用户的块锁定权限:

add_filter('block_editor_settings_all',函数($settings,$context){if($context->post&&“page”===$context->post->posttype){$settings['canLockBlocks']=false;}返回$settings;}, 10, 2 );

另一个常见的用例可能是只允许可以编辑站点视觉设计(主题编辑)的用户锁定或解锁块。现在,最好的选择是测试编辑主题选项功能,如以下代码段所示:

add_filter('block_editor_settings_all',函数($settings){$settings['canLockBlocks']=current_user_can('edit_theme_options');返回$settings;} );

开发人员可以使用任何类型的条件检查来确定谁可以锁定/解锁块。这只是通过过滤器挂钩可能实现的功能的一个小样本。