本文目录导读:

这是一个非常核心的问题,涉及到WordPress新旧两代编辑器的核心差异与兼容性。
块编辑器并没有完全消灭短代码,而是提供了一种更现代化、更直观的替代方案(块),但为了兼容旧内容和特定插件,块编辑器依然保留了对短代码的支持。
下面从核心区别、共存方式以及未来趋势三个维度为你详细解析。
核心区别:短代码 vs. 块
| 特性 | 短代码 (Shortcode) | 块 (Block / Gutenberg Block) |
|---|---|---|
| 出现时代 | WordPress 2.5+ (2008年) | WordPress 5.0+ (2018年) |
| 核心思想 | 中插入一个 “文本占位符”,由服务器端PHP解析替换成复杂功能。 | 划分为独立的 “块” 单元,每个块自带样式、设置和数据。 |
| 用户交互 | 用户在文本编辑器里手动输入 [shortcode param="value"],或通过下拉菜单选择。 |
用户通过可视化拖拽、点击、侧边栏设置来编辑,所见即所得。 |
| 处理方式 | 服务器端保存为文本HTML,用户在前端看到的是解析后的结果。 | 前端 + 后端处理,块在编辑器中是动态的,在保存时生成特定HTML注释 <!-- wp:plugin/block -->。 |
| 数据存储 | 内容存储在 post_content 字段中,包含原始短代码字符串。 |
内容存储在 post_content 字段中,但被包裹在块注释标记内,包含结构化JSON数据。 |
| 典型场景 | 插入相册、画廊、嵌入视频(YouTube)、自定义布局(如列、标签页)。 | 编辑文章段落、标题、图片、表格、封面、高级自定义布局(全站编辑模式)。 |
| 学习曲线 | 对开发者友好(写PHP函数),对用户不友好(要记忆语法)。 | 对用户友好(拖拽点击),对开发者有一定学习成本(需学习React/JS构建块)。 |
| 扩展性 | 通过 add_shortcode() 函数注册。 |
通过注册块类型(register_block_type())并搭建React组件。 |
块编辑器中的短代码
块编辑器并没有废除短代码,而是将其作为一个特殊的 “短代码”块 来处理。
-
“短代码”块的作用:
- 兼容性:当你的站点使用了依赖短代码的旧插件(如过去的很多表单插件、相册插件),你可以在块编辑器中添加一个名为 “短代码” 的块,然后像过去一样输入
[contact-form-7 id="123" ]这样的代码。 - 转换:当你编辑一篇用经典编辑器写作的旧文章时,原来的短代码会自动被包裹在一个“短代码”块中,确保它仍然能正常工作。
- 兼容性:当你的站点使用了依赖短代码的旧插件(如过去的很多表单插件、相册插件),你可以在块编辑器中添加一个名为 “短代码” 的块,然后像过去一样输入
-
为什么还需要短代码块?
- 过渡期:很多成熟的插件仍然主要使用短代码来提供功能(
[woocommerce_cart]页面简码),这些功能尚未被重写为原生块,所以短代码块仍然是必要的桥梁。 - 快速原型:对于开发者来说,写一个简单的短代码来快速呈现一个功能,比写一个完整的块要快得多。
- 过渡期:很多成熟的插件仍然主要使用短代码来提供功能(
未来趋势:块将取代短代码
- 官方态度:WordPress官方强烈推荐开发者学习构建原生块,而不是继续依赖短代码,块编辑器是全站编辑(FSE)和未来Word进化的基础。
- 用户体验:用户无需记住
[gallery ids="1,2,3"],可以直接在编辑器中拖拽、排序、设置图片块,这是巨大的体验提升。 - 数据结构:块的数据以结构化的JSON形式存储,更利于未来搜索引擎、外部应用(如通过REST API调用)理解和利用内容。
- 组件化:块是独立的、可重用的组件,你可以直接在“块”选项卡中导航、搜索,而不用去复杂的后台设置或记忆短代码参数。
总结与行动建议
| 你的身份 | 怎么做 |
|---|---|
| 普通用户 | 尽量使用块编辑器自带的块(段落、标题、图片、列等)来构建内容,对于插件(如表单、滑块)提供的功能,如果该插件提供了原生块,优先使用块;如果只有短代码,则使用“短代码”块安全地粘贴代码。 |
| 开发者 / 站点所有者 | 强烈建议学习开发原生块,虽然短期可能需要维护旧短代码,但长远来看,新的、面向未来的功能和用户体验都应构建在块之上,如果维护旧插件,可以逐步为用户提供一个“块”来替代“短代码”输入。 |
一句话总结:短代码是过去WordPress扩展功能的基石,块编辑器是其现代化的演进,两者当前共存,但块是未来。