GrapesJS 与 Gutenberg:如何构建自定义 WordPress 页面构建器

比较GrapesJS和Gutenberg,了解何时使用各自,并按照逐步指南构建使用GrapesJS的生产型WordPress页面构建器。

DevFuture Development
DevFuture Development
2025年12月16日7 个月前
阅读约 5 分钟2,236 次浏览

WordPress引入了 古腾堡 技术,用来现代化内容编辑,支持块功能,对许多网站来说效果不错。但如果你是在构建 自定义页面构建器、 SaaS编辑器,或者 一个具备完整HTML/CSS控制的可视化工具,古腾堡往往会成为局限而非解决方案。

这时 GrapesJS 就登场了。

在本文中,我们将比较 GrapesJS 与 Gutenberg,解释每种方法的合理性,然后带你了解一种 真实且面向生产 环境的 GrapesJS 构建自定义 WordPress 页面构建器的方法。

本指南面向:

  • WordPress 开发者与代理机构
  • 前端工程师
  • SaaS构建者创建页面、文档或电子邮件编辑器

没有花哨。没有营销炒作。只有实用的架构和实际决策。

古腾堡与葡萄JS——核心区别

在比较特征之前,重要的是要明白 Gutenberg和GrapesJS解决的是不同的问题

一句话说古腾堡

Gutenberg 是一个基于块的内容编辑器,紧 密结合 WordPress

GrapesJS 一句话

GrapesJS 是一个 与框架无关的可视化 HTML/CSS 编辑器 ,可以纯粹将 WordPress 作为后端使用。

这种差异塑造了其他一切。

快速对比:GrapesJS 与 Gutenberg

当古腾堡是正确的选择时

古腾堡在以下情况下表现良好:

  • 你正在构建 内容密集的网站
  • 编辑者是非技术用户
  • 你需要与WordPress核心深度集成
  • 布局灵活性次于一致性

如果你正在构建博客、营销网站或新闻门户——古腾堡通常就足够了。

当GrapesJS是更好的选择时

GrapesJS 在以下情况下成为更好的选择:

  • 你需要 完整的HTML和CSS控制
  • 你正在构建一个自定义页面构建
  • 你想导出WordPress以外的内容
  • 你正在构建一个 SaaS风格的编辑器
  • 你想设计 文档、邮件、提案、着陆页

换句话说:如果WordPress是你的 后端,而不是 编辑器,GrapesJS非常适合你。

真实世界架构:WordPress + GrapesJS

我们来看一个 生产准备的设备,而不是演示。

高级架构

WordPress 管理员
↓自定义编辑器页面
  ↓
GrapesJS(iframe)
  ↓
REST API  
↓
Database / Media Library
  

职责分工

  • WordPress
  • 认证与权限
  • 存储(HTML、CSS、JSON)
  • 媒体上传
  • REST API
  • 葡萄JS
  • 视觉编辑
  • 组件与布局
  • 风格
  • 导出 HTML/CSS

这种分离保持系统清洁且可扩展。


步骤1:在WordPress管理中嵌入GrapesJS

创建一个 自定义管理员页面自定义帖子编辑器

安全地重新排队脚本

add_action('admin_enqueue_scripts', 函数 () {
wp_enqueue_script(  
'grapesjs',  
'https://unpkg.com/grapesjs',  
[],  
null,  
true
);

   wp_enqueue_style(
  'grapesjs-css',
  'https://unpkg.com/grapesjs/dist/css/grapes.min.css');


  wp_enqueue_script(“  
我的编辑”,
  plugin_dir_url(__FILE__) 。'editor.js',
  [''葡萄'],  
'1.0',  
true);


  wp_localize_script('我的编辑器', 'WP_EDITOR', [
  'nonce' => wp_create_nonce('wp_rest'),  
'api'  => rest_url('custom/v1'),
 ]);
});

为什么iframe很重要

GrapesJS 在 iframe 内渲染内容:

  • 防止WordPress管理员CSS冲突
  • 保持前端风格的独立性
  • 让输出变得可预测

这是 优点,不是缺点。

步骤2:初始化GrapesJS

editor.js年:

const editor = grapesjs.init({
 container: '#editor', 
height: '100vh', 
fromElement: false,
 storageManager: false, 
canvas: {  
styles: [
   '/wp-content/themes/your-theme/style.css'  
]
 }
});

禁用默认存储管理器——我们会手动处理保存。

步骤3:正确保存内容

你应该保存什么?

推荐阅读:

  • HTML →最终输出
  • CSS →风格
  • projectData → GrapesJS JSON(用于重新编辑)

REST API 端点(PHP)

register_rest_route('custom/v1', '/save', [
 'methods' => 'POST',
 'permission_callback' =>函数 () {
  return current_user_can('edit_posts');
 }, 
'callback' =>函数 ($request) {
  $post_id = intval($request['post_id']);

  update_post_meta($post_id, '_gjs_html', $request['html']);
  update_post_meta($post_id, '_gjs_css', $request['css']);
  update_post_meta($post_id, '_gjs_project', wp_json_encode($request['project']));

  返回 ['成功' => true];
 }
]);

保存按钮(JS)

async 函数 savePage() {
waitit fetch('${WP_EDITOR.api}/save', {
  方法: 'POST',  
headers: {   
'Content-Type': 'application/json',   
'X-WP-Nonce': WP_EDITOR.nonce
  },
  body: JSON.stringify({   
post_id: 123,   
html: editor.getHtml(),   
css: editor.getCss(),
    project: editor.getProjectData()
  })
 });
}

步骤4:将内容重新加载到编辑器中

editor.loadProjectData(projectJson);

这实现 了真正的往返编辑,而古腾堡在复杂布局时对此颇为困难。

步骤5:WordPress媒体库集成

使用原生媒体选择器:

const frame = wp.media({
 title: 'Select image', 
multiple: false
});

frame.on('select', () => {
 const file = frame.state().get('selection').first().toJSON();
 编辑。AssetManager.add({
  src: file.url,  
type: 'image' 
});
});

frame.open();

现在,WordPress上传的图片直接出现在GrapesJS中。

安全性与权限

千万不要错过。

清单:

  • ✅ REST nonces
  • ✅ current_user_can() 检验
  • ✅ 渲染时消毒,而不是保存
  • ✅ 按角色限制编辑访问

重要提示:

如果用户导出 HTML, 不要 过度净化存储内容——只有在公开渲染时才进行净化。

性能最佳实践

  • 只有在编辑器打开时才启动 GrapesJS 进行懒散加载
  • 只注入必要的CSS 到画布里
  • 避免重新初始化编辑器
  • 每页使用一个编辑器实例
  • 积极管理缓存资产

常见陷阱

❌ “我的风格不适用。”

你忘了把CSS加载到iframe(canvas.styles)里。

❌ “编辑很慢”

插件太多或自动保存了。

❌ “内容在加载时中断”

你只保存 HTML,而不是项目 JSON。


最终决定:GrapesJS还是古腾堡?

如果有以下条件,选择 古腾堡

  • 你正在构建以内容为先的WordPress网站
  • 你需要原生的WP UX

选择 GrapesJS 时:

  • 你正在构建一个自定义页面构建
  • 你需要 完整的 HTML/CSS 控制
  • WordPress是你的后台,不是你的编辑器
  • 你正在构建一个SaaS或高级编辑器

总结

古腾堡是一位出色的 内容编辑

GrapesJS 是一个 构建框架

如果你的目标是打造更接近 Webflow、Elementor、Notion或文档编辑器的软件,GrapesJS搭配WordPress是一个强大且灵活的基础。

WordPress 处理它最擅长的部分——用户、权限、存储。

GrapesJS擅长的部分是视觉编辑和布局。

这种分离是实现可扩展、专业建筑的关键。

🔌 GJS.Market

在寻找 GrapesJS 插件吗?

超过 100 款精选插件、预设与模板 —— 由社区精挑细选并持续维护。

分享本文TwitterFacebookLinkedIn
发布平台
DevFuture Development
DevFuture Development
访问店铺 →

更多来自 DevFuture Development

发现更多精彩文章,及时获取最新内容。

查看全部文章

来自 DevFuture Development 的付费插件

由该作者精心打造的精选付费插件。

访问店铺 →