稍显硬核的技术细节:我们是如何实现短代码映射的

作者:

在

,

How-We-Made-Our-Version-Of-Shortcode-Mapping-Happen-2在上一篇文章中,我们探讨了简码映射的基础知识,以及您如何享受它带来的诸多好处。我们决定将介绍 Page Builder Sandwich 版本简码映射的文章拆分出来,因为接下来的内容可能会更加偏向技术性。

以下是对我们简码映射功能内部工作原理以及我们如何实现它的更深入说明。

自动化流程

为了决定将哪些插件纳入简码映射器中,我们编写了一个自动化脚本,根据以下标准从 WordPress 插件目录中收集热门插件:

  • 位列前 1,000 个热门、高评分且保持更新的插件中,拥有至少 4,000 次活跃安装,
  • 拥有至少 4,000 次活跃安装,
  • 拥有至少 20 条评价,以及;
  • 平均评分至少达到 3 星

我们每天都会针对 WordPress 插件目录运行该查询。这些筛选条件确保我们获取到许多人都在使用的优质插件列表。在撰写本文时,该标准筛选出了 800 个插件。这数量非常多。真的很多。

为简码映射检测到的一些最热门插件。
为简码映射检测到的一些最热门插件。

随后,我们对每个插件的源代码运行一系列自动化检查,以确定其是否包含任何简码,接着尝试找出所有这些简码及其所有属性。在对数据进行处理后,最终得出了超过 2,000 个简码。简直令人难以置信。检测到的简码随后会被录入到简码映射数据库中,以供人工检查。

在这个流程结束时,我们将获得一份庞大的插件列表及其可能包含的简码。接下来的工作就是清理这些数据,以确保一切准确无误。

人工流程

这可能是整个映射系统中最困难的部分。插件代码千差万别,并非所有简码都能被我们的脚本自动检测到。尽管 WordPress Codex 建议使用 shortcode_atts 函数来过滤简码属性,但这仅仅是一个建议,并不是每个人都会这么做。而且在安装插件时,也没有万无一失的方法去检查简码的内部实现。

为了确保我们准确获取所有简码及其属性,我们专门创建了一个用于编辑简码和属性的前端区域,它是使用 AngularJS 和 Bootstrap 构建的。

用于校对所有已映射简码的 Bootstrap 和 AngularJS 界面。
用于校对所有已映射简码的 Bootstrap 和 AngularJS 界面。

我们必须手动逐一检查每个插件并查看其简码文档,以确保我们拥有的所有数据均正确无误。

尽管这极其繁琐,但自动化流程也有一些令人欣慰的积极面:

  • 根据我们的早期统计,大约每两个插件中只有一个包含简码。
  • 检测到的简码中有一半没有属性(但其中一部分可能是误报)
  • 只筛选优质插件,使它们极大概率都附带有简码文档

只有在某个插件的所有简码都经过核对后,服务器才会开始向用户分发该插件的简码映射。

REST API 调用

拼图的最后一块是插件本身。这里的概念很简单:找出哪些插件处于启用状态、网站使用的是什么主题以及有哪些可用简码,然后向简码映射数据库查询是否存在相应的映射。为此,我们创建了一个自定义 WP REST API 端点,所有客户端都会向其发送请求以获取最新的简码映射。

未来展望:众包

人工检查每个插件需要耗费大量的时间和精力。一旦简码映射平台趋于稳定,我们计划向所有人开放简码映射。这意味着每个人都可以协助添加简码。

您可能会想:“我为什么要帮忙映射简码?这对我有什么好处?”嗯,人们愿意伸出援手的原因有以下几点:

  1. 如果您开发了某个插件,并且由于上述筛选标准我们尚未将其收录(且该插件位于 WordPress 插件目录中),那么您可以自行添加映射。您的插件将获得 PBS 的全力支持!
  2. 由于我们在自动化流程中仅处理 WordPress 插件目录中的插件,因此付费插件与主题的作者不会被包含在内。所以如果您拥有此类产品,也可以为其添加简码映射。
  3. 对于非插件开发者,我们可以为提供帮助的人提供奖励。为了使简码映射成为一项有吸引力的行动,我们可以向乐于助人的贡献者赠送个人许可证,或升级到 PBS 的高级许可证!

订阅我们的时事通讯

简码映射功能暂定于 2016 年 8 月 12 日  8 月 15 日  8 月 16 日面向我们的客户推出。届时并非所有简码都会完成映射(我们预计大概覆盖 100 个插件),但映射工作将持续进行,一旦有新内容推出,客户便会立即获取。

订阅我们的时事通讯,以获取有关简码映射、发布时间以及何时向公众开放简码映射的最新资讯!