ACF块:如何使用块锁定

上次更新时间:2023年12月4日

概述

锁定您的ACF块使用块锁定可以确保这些块不能以未经授权的方式删除或修改。您可以将块锁定视为一种安全机制,无论您是在客户端的WordPress站点上使用还是在自己的站点上使用。在本教程中,我们将向您展示如何使用锁定来限制单个块甚至模式和模板的移动和删除。

在我们上一篇关于使用具有InnerBlock和父/子关系的ACF块,我们建立了一个自定义作者信息块(父)。此自定义ACF块使用内部块传递一系列嵌套块,其中包括另一个自定义作者推特块(子)。

Author Twitter块只能作为其父Author Info块上下文中的嵌套块使用。我们使用“父级”:[“acf/author-info”]在作者推特上块.json文件来建立这种关系和嵌套的可发现性。

现在,我们希望扩展此Author Info块,以改进编辑的编辑体验。我们希望确保他们能够正确地进行编辑,而不是意外地删除或移动块并弄乱整体布局。这就是块锁定有用的地方。

如果您想完全按照本教程中的步骤操作,并且已经对ACF块有了一些经验,您可以下载插件在上一个教程中创建,并在进行添加时添加到其中。


ACF模块新手?从我们的教程开始创建您的第一个ACF块!


什么是块锁定?

WordPress提供了两种类型的块锁定:模板锁定单独闭塞锁定。您可以使用这两个选项中的任何一个,也可以将它们组合在一起,对块进行复杂的限制。

在WordPress中使用块锁定时的其他注意事项:

  • 开发人员可以使用模板锁定在它们的嵌套块中。
  • 开发人员可以使用锁定整个模板模板_锁定,即使在注册自定义帖子类型时也是如此。
  • 可以分配单个块块标记中的参数。分配参数可以用于传递到模板中的各个块。单个块的覆盖模板锁定,除非模板锁定值为仅内容.

我们强烈建议您阅读Make WordPress培训团队的Wes Theron提供的关于The Key to Locking Blocks的视频,以及WordPress文档.

使用InnerBlock模板锁定

模板锁定可以通过传递模板锁定内部块组件。这样地:

<?php(电话)<InnerBlocks templateLock=“all”/>

模板锁定选项包括以下内容:

  • 仅内容-阻止所有操作。此外,没有内容的块类型将从列表视图中隐藏,并且无法在块列表中获得焦点。与其他锁类型不同,子锁无法覆盖此项。
  • 全部的-阻止所有操作。无法插入新块、移动现有块或删除块。
  • 插入-防止插入或删除块,但允许移动块。

以下是应用于我们的作者信息块时,这些内容的屏幕截图。

展开列表视图侧栏的编辑器,仅显示带有锁定图标的嵌套内容块。InnerBlock templateLock=contentOnly的结果。

作者信息块templateLock=“contentOnly”启动内部块.
所有不包含内容的嵌套块都将从列表视图中隐藏。只有内容是可编辑的。

展开列表视图侧栏并显示所有嵌套块的编辑器,带有锁定图标。InnerBlock templateLock=all的结果。

作者信息块templateLock=“全部”启动内部块.
所有嵌套块都被锁定,以防止移动、删除或插入新块。

展开列表视图侧栏并显示所有嵌套块的编辑器,带有锁定图标。此外,为嵌套段落块展开编辑导航,并突出显示“移动到”选项。InnerBlock templateLock=insert的结果。

作者信息块templateLock=“插入”启动内部块.
所有嵌套块都被锁定,无法删除或插入新块。可以移动现有块。

解锁一个嵌套块

对于作者信息块,我们希望为编辑提供删除作者自传段落的选项,但其他内容应保持锁定,以免被删除。我们将从锁定所有街区开始templateLock=“全部”属性,然后我们将使用单独的锁定属性来解锁一个嵌套块,我们想让它们删除这个嵌套块。我们将对作者信息进行所有更改模板.php文件,在作者信息目录自定义插件我们在教程中创建了内部块.

现在,我们将更新我们的内部块代码如下:

<?php(电话)<InnerBlocks templateLock=“all”/>

接下来,我们必须更新单个嵌套块以允许删除。因此,如果编辑选择删除作者的传记段落,那么他们有能力。

如何使用单个块锁定

单个块锁定优先并覆盖模板锁定,除非 templateLock=“contentOnly”使用。这将从列表视图中隐藏所有没有内容的块,并允许编辑器更新只有嵌套内容块。

然而,我们之前决定申请templateLock=“全部”。要更新嵌套在我们传递的模板中的单个Paragraph块,我们只需要将其作为附加的目标参数。以下是应用参数之前的缩写嵌套代码:

阵列(“核心/段落”,阵列(“style”=>数组(…),'fontSize'=>'small',“content”=>“Ea qui volptate irure nulla aliquip nulla anim labum execulation eu incididunt.”,),数组(),),

这是我们的应用:

阵列(“核心/段落”,阵列(“style”=>数组(…),'fontSize'=>'small',“content”=>“Ea qui volptate irure nulla aliquip nulla anim labum execulation eu incididunt.”,“lock”=>数组(“删除”=>false,),),数组(),),

使用“删除”=>false上面,我们声明嵌套的Paragraph块应该允许将被删除。是的令人困惑,但这就是你怎么做的!😉

现在我们已经拥有了对块的所需控制,包括模板锁定和单个块锁定。

Author Info块示例,其中的行指向不同的块。

Author Info块示例,其中的行指向不同的块。

接下来的步骤和注意事项

本教程介绍了如何使用块和模板锁定来设置编辑条件,并防止未经授权删除或修改ACF块,但还有很多空间要探索。

还有另一个元素可以帮助你管理编辑经验,当你在模式中放置块时,可以利用它。如果您计划在模式上下文中利用ACF块,那么您需要检查仅内容块锁定.

您还可以通过阻止某些角色或用户锁定和解锁块来扩展块内容控制策略。确保了解如何限制角色的锁定和解锁、特定用户,甚至帖子类型。

如果您一直在关注,那么您最终的完整插件代码应该与我们的版本相匹配: author-info-block-v2.zip

在下一个教程中,我们将向您展示如何在ACF块中使用WordPress全局样式和块样式,从而在管理设置和样式时提供一致且易于使用的体验。