上周我构建了四个块插件。这不是我打算做的事情。我不会有一天醒来并宣布,“我想我会在接下来的几天内构建一组自定义块类型。”而这恰恰发生了。

我构建的第一个插件是为了处理一张没有看到任何牵引力的旧 Gutenberg 票证。也许其他人对这个想法不感兴趣,或者也许它从未在成千上万张其他票的海洋中穿过他们的道路。为什么不自己建造呢?所以我做了。花了几个小时,但主要是根据我的喜好重新配置 @wordpress/scripts 构建脚本并阅读文档。

有了这个插件,我开始寻找新的问题来解决。我注意到的一个是缺少评论标题栏,该评论标题栏是引入即将到来的评论查询循环块所必需的,以在 WordPress 6.0 登陆之前实现奇偶校验。所以,我为它构建了一个粗略的插件。

站点编辑器中的评论标题栏。

幸运的是,其他人采用了这个最初的想法并采用了它,构建了比我第一次尝试更灵活的东西。现在,古腾堡有一个新街区。

我还有一些其他的事情要解决,而且在下雨的星期天我无事可做。也就是说,WordPress 不包含 wp_list_users() 和 wp_list_authors() 模板标签的等效块。这似乎是一个疏忽,所以我研究了这些的早期版本。

我将很快将它们免费放置在官方 WordPress 插件目录中,供任何对它们感兴趣的人使用。我只能希望他们将来能帮助别人。

这篇文章是关于分享我的经验、旅程,而不是这一切的结果。

最近,有人问我是否可以在这个 JavaScript 密集的块世界中担任开发人员。自从我在 WP Tavern 担任写作职位并为用户开发实际解决方案以来,已经两年多了。那是我开始在块编辑器中使用 JavaScript 的时候。

从那时起,我开始涉足块主题,甚至在 WordPress.org 上发布了一个主题。我在业余时间构建了一些基于 PHP 的项目来取乐。去年夏天我什至创建了我的第一个自定义块插件来与读者分享我的经验。不久之后我建造了第二个。

我将近一年前燃起的火焰很快就熄灭了。这更多地与块主题开发的婴儿期状态有关。我对它的潜力感到兴奋,但考虑到所有这些都是一个有趣的副项目,不断的破损超出了我的处理时间。

本质上,我还是一个程序员,一个问题解决者。所以,我重新开始。

第一站是构建块的 JavaScript 构建设置文档。这次我要学习“WordPress 之道”。在大多数情况下,我坚持下去。

我遇到的唯一问题是安装脚本将我的命名空间 x3p0 插入到函数名称中的 x_3_p_0 中。清理起来真是一团糟。但是,我不需要在其他块插件中执行该过程。我只想在第一次尝试时获得初学者的经验。

对于积木来说,@wordpress/scripts 就够了。我修补了它,添加了一些自定义命令,并修改了输入/输出文件夹。但是,它具有快速启动和运行所需的一切。

我跳过你好,蒙多! (你好,世界!)设置教程的一部分。每当我着手构建任何东西时,我都计划一头扎进更复杂的事情中。但是了解基础知识以了解事物的工作原理永远不会有坏处。

我的编程风格是建立在失败之上的。我抓住了一个想法的机会,惨遭失败,并继续从错误中吸取教训。不久之后,我有了一个自定义块类型,它显示了指向嵌套评论父级的链接:

注释父链接块。

虽然这是成功的,但我知道其他一些内置的编辑器组件可能会使它变得更好。

第一块让我领略了现代 WordPress 开发。这是一个构建起来相对简单的插件,但很容易看出如何扩展它以获得更复杂的功能。

在过去的几年里,组件系统已经发展成为一个强大而灵活的工具集,供开发者使用。另外,组件级文档在这一点上是全面的,尤其是当它与核心代码中的用法配对时。

随着我继续构建新模块,我开始接受更复杂的概念。我需要学习的一件事是如何与核心数据层交互。当我输入我的第三和第四块类型时,我需要查询用户并列出他们:

按作者块列出用户。

虽然有一个关于使用 Core Data 的“基本”教程,但参考指南有些参差不齐。有些部分甚至似乎完全缺失。高级精灵在哪里?当您超越几个简单的表单字段时,我找不到任何关于数据“做事”的内容是插件开发的核心。

我花了一些时间使用久经考验的 console.log() 来解决问题并仔细研究核心代码。最终,我推动并构建了几个工作项目。

与一年前相比,我这次的体验有提高吗?毫无疑问,它做到了。

最重要的是,我要感谢古腾堡计划的所有贡献者。大部分时间都在 PHP 世界中度过的开发人员欢迎构建工具和一组预构建组件。我总是喜欢能够拿起一个工具集并立即开始构建它。我确信此时我只是瞥见了可能性,但我期待着尝试新事物。随着我越来越适应,也许我会写一些我认为缺少的高级教程。

类别:想法、插件

来源