WordPress 块锁定 API 完全指南:控制你的主题布局
WordPress 块编辑器(Block Editor)的块锁定功能,简单来说,就是让你能“锁住”主题里的某些部分,防止编辑者不小心弄乱设计。比如,你不想让用户删掉网站头部的 Logo,或者移动联系按钮的位置,这个功能就能派上用场。
本文将带你从零开始,了解两种锁定方式:块锁定和模板锁定。我们会通过一个“活动事件”的实战案例,一步步教你如何禁止移动、禁止删除、禁止插入新块,甚至开启“仅内容编辑”模式。如果你是主题开发者,或者正在为客户搭建网站,这篇文章能帮你减少很多不必要的售后支持。
什么是块锁定?
块锁定 API 让你能控制用户与特定区块的交互方式。你可以决定他们能否移动、删除或修改某个区块的设置。
主要锁定类型:
- 禁止移动:让区块在编辑器中“钉”在原位。
- 防止删除:保护关键区块(如标题、Logo)不被误删。
- 禁止插入:防止用户在特定区域(如页脚)添加新内容。
- 内容专属模式:用户只能修改文字或替换图片,无法调整样式或布局。
这里有两种作用范围:块级别(只影响单个块)和模板级别(影响容器内的所有子块)。注意,这里的“模板”指的是像“组(Group)”、“栏(Columns)”这样的容器块,不是指 WordPress 的主题模板文件。
块级别锁定实战
这部分教你如何锁定单个块。我们先创建一个名为“活动事件”的示例区块。
创建你的一个区块
在你的主题文件夹下创建一个 patterns 目录,然后新建一个 event.php 文件,复制以下代码:
php
<?php
/**
* Title: 活动事件
* Slug: themeslug/event
* Categories: banner
*/
?>
<!-- 外层组块开始 -->
<div class="wp-block-group alignwide" style="padding:20px;background:#111;color:#fff;">
<!-- 图片块 -->
<figure class="wp-block-image">
<img src="https://example.com/event-image.jpg" alt="活动主视觉图"/>
</figure>
<!-- 三列布局 -->
<div class="wp-block-columns">
<div class="wp-block-column">
<p><strong>地点:</strong> 北京市朝阳区798艺术区</p>
</div>
<div class="wp-block-column">
<p><strong>日期:</strong> 2026年8月15日</p>
</div>
<div class="wp-block-column">
<div class="wp-block-button">
<a class="wp-block-button__link">立即购票</a>
</div>
</div>
</div>
</div>
<!-- 外层组块结束 -->
在文章编辑器里插入这个区块,你会看到一张图片、三段文字和一个按钮。
如何锁定“图片块”不能移动
选中图片块,点击工具栏的“选项”按钮(三个竖点),选择“锁定”。
在弹出的对话框里,勾选 “禁止移动”。这时候,WordPress 会自动在代码里加上锁:
php
<!-- 注意 lock 属性出现了 -->
<!-- wp:image {"lock":{"move":true,"remove":false}} -->
如果你想在代码里直接写死这个设置,可以这么改:
php
<!-- wp:image {"lock":{"move":true,"remove":false}} -->
<figure class="wp-block-image">
<img src="https://example.com/event-image.jpg" alt="活动主视觉图"/>
</figure>
<!-- /wp:image -->
现在,用户插入这个区块后,图片就动不了了,但文字和按钮依然可以自由调整。
如何锁定“图片块”不能被删除
和上面类似,在锁定弹窗里勾选 “防止删除”:
php
<!-- wp:image {"lock":{"move":false,"remove":true}} -->
你也可以把两个锁都加上,让图片既不能移动也不能删除。这在保护核心视觉元素时非常有效。
模板级别锁定:控制整个布局
如果你想把整个“活动事件”区块锁死,比如用户不能往里面加新东西,或者只能改改文字,那就得用模板锁定了。
注意: 模板锁定只对特定的容器块有效:组(Group)、封面(Cover)、栏(Columns)、列(Column)、导航(Navigation)。
锁定所有子块:不能移动,不能删除
选中外层的“组块”,在锁定弹窗里勾选全部选项,并点击 “应用到所有块”。代码会变成:
php
<!-- wp:group {"templateLock":"all","lock":{"move":true,"remove":true}} -->
这样,用户对里面的任何块都只能“看看”,不能挪动位置,也不能删掉任何一个元素。
防止用户插入新块
有些场景下,你不希望用户往页脚里添加额外的内容。这没有 UI 操作界面,需要你手动编辑代码:
php
<!-- wp:group {"templateLock":"insert"} -->
加上这行属性后,用户将无法在该区域内通过“+”号添加任何新块。
内容专属模式:用户只能改文字和图片
这是我推荐的功能,特别适合做“产品详情页模板”或“文章卡片”。
php
<!-- wp:group {"templateLock":"contentOnly"} -->
设置之后,用户在编辑器中选中任何块,侧边栏只会显示 “内容” 面板,样式、尺寸、颜色等设计选项全部消失。他们能做的只有:改标题文字、换配图、编辑按钮文字。
注意: 开启“内容专属模式”后,请确保你的区块里没有必需的自定义 CSS 类或样式依赖,否则用户没法调整。
总结
| 锁定方式 | 适用场景 | 关键属性 |
|---|---|---|
| 禁止移动 | 固定布局结构,如网站导航 | {"lock":{"move":true}} |
| 防止删除 | 保护核心内容,如 Logo、CTA 按钮 | {"lock":{"remove":true}} |
| 禁止插入 | 限制内容区域,如页脚、侧边栏 | {"templateLock":"insert"} |
| 内容专属 | 提供“模板化”编辑体验,只改文字/图片 | {"templateLock":"contentOnly"} |
块锁定 API 是 WordPress 主题开发中控制编辑体验的利器。合理使用能大幅降低用户误操作的风险,尤其当你为客户交付项目时,能省去很多“我怎么把按钮弄回来了?”这样的烦恼。建议从简单的块锁定开始,逐步深入到模板锁定,终你能打造出既灵活又稳健的主题。