Communitygithub.com

emdash-cms/emdash

分析和移植WordPress插件的行为、自定义文章类型、短代码、管理工作流及存储数据到当前EmDash扩展点。适用于WordPress插件迁移,或在决定将哪些行为归属于EmDash插件、站点Schema、种子数据或Astro代码时使用。不适用于不包含插件功能的可视化主题移植。

emdash 是什么?

该技能为开发者提供了一套系统性的策略,用于将WordPress插件迁移至EmDash CMS平台。它强调保留插件的用户可见行为和数据模型,而非逐行翻译PHP代码。通过分析WordPress与EmDash在职责划分上的差异,技能指导开发者将插件功能(如自定义文章类型、短代码、REST端点、计划任务、管理页面等)映射到EmDash的合适组件上,包括站点Schema、Astro代码、沙箱插件或可信原生插件。该技能详细说明了如何记录源插件的行为、分配每个功能的归属、选择插件格式、规划数据迁移以及验证等效行为。适用于开发者和AI助手在有详细技术背景时,高效、安全地执行插件迁移任务。

兼容平台✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/emdash-cms/emdash/tree/HEAD/skills/wordpress-plugin-to-emdash

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

将WordPress插件移植到EmDash

保留插件的用户可见行为和数据模型,无需逐行翻译PHP代码。WordPress和EmDash的职责划分不同,因此首先要决定每个功能应归属于站点Schema、Astro代码、沙箱插件还是可信原生插件。

在实现插件代码前,请先加载创建插件。当移植涉及集合、种子数据、查询或前端模板时,请加载构建EmDash站点。这些技能定义了当前的API;本技能涵盖迁移决策。

理解源插件

检查插件源代码、安装行为、数据库变更、钩子、REST端点、计划任务、管理界面、短代码或块、前端输出、权限以及外部服务。识别用户依赖的行为,并区分开与WordPress特定实现的部分。

记录:

  • 所需的内容和配置数据;
  • 修改或发布数据的操作;
  • 授权和信任边界;
  • 后台或重试行为;
  • 前端和管理员交互;
  • 导入、迁移和回滚需求;
  • 重用代码或资产的许可义务。

如果缺少源插件、预期行为或目标EmDash环境的信息,请报告差距而非自行虚构等价物。

分配每个职责

WordPress 职责EmDash 目标
自定义文章类型、分类法或元数据通过站点Schema或种子数据创建的集合、分类法和字段
全局呈现设置站点设置,由Astro模板读取
插件拥有的用户设置ctx.settings;将凭据声明为加密的secret字段
插件拥有的游标、缓存或内部状态插件作用域的ctx.kv
插件拥有的可查询记录声明的ctx.storage.<collection>存储
内容发现、翻译或发布能力控制的ctx.content和ctx.schema;策略钩子和操作拥有单独的权限
运行时分类法或重定向管理ctx.taxonomies或ctx.redirects,具有有限的读/写能力
评论管理ctx.comments;读取会暴露个人数据,审核使用预期状态
WordPress REST端点声明的插件路由,包含明确的方法、输入、头部和响应模式
计划任务cron钩子和ctx.cron调度
管理页面或表单沙箱插件使用Block Kit;仅可信原生插件使用React
文章编辑器元框或已保存条目操作私有路由上的admin.editorPanels或admin.editorActions
用户或作者查询ctx.users,带users:read权限
出站HTTP请求ctx.http.fetch(),带network:request和allowedHosts条目
媒体操作分别控制元数据读取、字节读取、元数据写入和上传/删除权限
WP_Query或模板标签EmDash内容API,位于Astro站点代码中
短代码或编辑器块尽可能使用已有的Portable Text内容;自定义Portable Text块需要可信原生插件
原始头部标记或脚本仅可信原生插件可使用page:fragments;通过注册表安装的插件只能贡献经过验证的page:metadata

不要通过直接访问EmDash系统表来创建集合或分类法。应使用公开的模式、种子数据、CLI或管理边界。不要使用内部REST路由来模拟不存在的沙箱API。

保持权限分离:读取媒体元数据不授予字节访问权限,审核不授予删除权限,发布策略不授予发布操作权限,内容恢复不授予普通内容读取权限。

选择插件格式

默认使用沙箱插件。它支持便携式钩子、路由、声明的存储、媒体、网络访问、MCP工具和Block Kit管理界面,通过安装时的信任契约实现。

仅在功能需要主机进程访问、React管理代码、Astro渲染组件、原始页面片段或自定义Portable Text块定义时,才使用可信原生插件。在迁移计划中说明额外的权限和分发限制。

某些WordPress插件不需要EmDash插件。自定义文章类型加前端模板可能仅需Schema、种子数据和Astro页面即可。当静态站点结构涵盖所需行为时,不要添加运行时扩展。

规划数据迁移

在编写运行时代码之前,描述现有WordPress数据如何映射:

  • 映射文章ID、slug、语言、作者、状态、修订版和发布日期;
  • 保留文章、术语、媒体和插件拥有记录之间的关系;
  • 区分一次性导入和需要持续同步的数据;
  • 使导入可重新启动,并定义如何检测重复项;
  • 保留源标识符,以便用于对账或重定向;
  • 识别无法表达的内容,需要产品决策。

对新站点的初始Schema和示例内容使用种子数据。对现有站点的生产数据使用导入器或迁移路径;种子数据不是备份或持续同步机制。

验证等效行为

通过用户和运行时接触的边界进行测试:

  • 针对内容模型更改的Schema和导入数据断言;
  • 针对沙箱钩子、路由、存储和权限的生产边界插件测试;
  • 针对管理员和前端流程的浏览器验证;
  • 重启、重复交付、授权和失败情况(当源功能依赖它们时)。

比较可观察行为,而非内部结构。记录有意为之的差异以及任何仍然不受支持的WordPress功能。

交付移植

提供:

  1. WordPress行为和数据简洁清单;
  2. 职责映射表及沙箱/原生决策;
  3. 数据迁移或种子计划;
  4. 跨插件和站点代码的实现;
  5. 验证证据及已知差距;
  6. 重用代码或资产的归属和许可声明。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能