Nextora 区块
拥有区块的完整代码契约:元数据、注册、编辑器 UI、动态渲染、视图脚本、构建产物消费。外观规则由 nextora-design-system 掌管;模板和模式由 nextora-site-composition 掌管;子主题脚手架由 nextora-child-themes 掌管。当需求涉及区块的外观时,加载设计系统技能;当区块必须遵循预设值或访客切换器时,同时加载两者。
先加载以下参考文件
仅读取任务所需的内容,以此文件的相对路径为基准:
| 文件 | 读取目的 |
|---|---|
references/block-contract.md | 文件夹布局、block.json 键值、注册器行为、分类强制转换、生成器、esbuild/window.wp shim 及其 14 个句柄依赖列表、save 语义、渲染和视图合约。 |
references/editor-and-repeaters.md | 两个真实的列表编辑器(team-section 和子 repeater.tsx)、它们确切的提交/取消语义、富文本和媒体辅助函数。 |
../nextora-ecosystem/references/source-map.md | 每条规则的来源以及如何重新检查它;根解析词汇表。 |
../nextora-ecosystem/references/quality-gates.md | 数据、对等性、资产、安全性、国际化、可访问性门控以及共享的下游验收配方(§8)。 |
切勿将参考文件中引用为当前值的值视为最终值:在编辑前重新读取目标主题自身的文件。
有序工作流程
1. 确定目标和区块的主机主题
从实际安装或提供的仓库中识别父主题根目录和活动(子)主题根目录 —— get_template_directory() 和 get_stylesheet_directory(),或 style.css 头部信息。子区块仅当子主题注册它时才存在;父主题注册器仅读取模板目录。没有真实的 Nextora 源代码,切勿声称 Nextora 兼容性。
2. 读取目标自身的证据
按此顺序,优先使用真实值而非本文档中的任何内容:
blocks/blocks.php—— 注册器、其 glob 模式、是否检查可读性、分类过滤器,以及它引入的每个区块级 PHP 文件。blocks/*/block.json—— 现有名称、分类、supports、资产指针。- 最接近现有区块的
edit.tsx、render.php、可选的view.ts、save.tsx、register-styles.php/register-editor.php。 scripts/build-blocks.mjs—— 确切的入口 glob 模式和 shim。package.json+.nvmrc—— 实际存在的命令和 Node 版本。theme.json—— 区块应引用的调色板、字体、渐变、字号和间距标识符。
3. 在创建之前决定复用
当请求的编辑结构已存在时(另一个标题字段、另一个列表、另一个开关),扩展现有区块。仅当请求的行为或编辑结构无法通过现有区块、核心区块、模式或区块样式变体表达时,才创建新区块。说明你复用了哪个现有区块,或为什么没有适合的区块 —— 并且在交付物中说明,而不仅仅在对话中说明:在区块编辑器入口的文档块中以及在主题的 README 中(列出你拒绝的最接近的候选者以及每个候选者缺少什么)。一个仅阅读仓库的记录者必须能够找到该决策。
4. 首先编写元数据
block.json 使用 apiVersion: 3、命名空间/文本域/分类(父主题中为 nextora + nextora;子主题中为 <child-slug>)、带有真实默认值的类型化属性、用于包装外观的 supports,以及指向已构建文件的资产指针:`editorScript: