无头 WordPress 究竟有多小众?

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 价值 200 美元的免费积分!

我想知道无头 WordPress 会落在哪里。 这里所说的“无头”指的是仅使用 WordPress 管理界面,并通过 WordPress REST API 构建面向用户的网站,而不是传统的 WordPress 主题结构。

它是... 大的? WordPress 的未来? 还是相对小众的?

需求在哪里?

当然,对它有需求。 我认识很多在做这件事的人。 例如,Gatsby 有一个 gatsby-source-wordpress 插件,允许您从 WordPress 网站获取内容,以一种使用 WordPress REST API 消费内容并将其缓存为 GraphQL 以用于 React 支持的 Gatsby 网站的方式。 正如我所写的那样,它本月已被下载了 59,000 次,总共被下载了 851,000 次。 对于一种特定的网站构建技术来说,这是一个健康的用量。 实际上,每次使用 gatsby-source-wordpress 都在无头方式使用 WordPress - 这正是它的本质/功能。 如果你对此感兴趣,这里有 Ganesh Dahal 深入探讨它.

而这仅仅是一件事,它没有考虑致力于此理念的整个公司和产品。

无头方式的改进目标是什么?

Gatsby 集成很好地解释了为什么任何人都应该考虑使用无头 WordPress 网站。 我会谈到这一点。

许多人主张原因是架构上的。 它将后端与前端分离。 它拆除了单体架构。 作为一个分离的系统,后端和前端可以独立发展。 但是,随着时间的推移,我对这个想法越来越不热衷。 例如,我认为,在像这样的无头设置中简单地替换 WordPress 并用另一个 CMS 替代它,说起来容易做起来难。 此外,我将使用 WordPress API 不仅为网站提供动力,而且为原生阅读应用程序和一些数字互联网连接高速公路广告牌或其他东西提供动力,在我看来,这不是一个流行度暴涨的用例。

我认为人们为 Gatsby 驱动的前端选择 WordPress 后端的主要原因实际上是:他们喜欢 React。 他们喜欢用组件构建东西。 他们喜欢快速页面过渡。 他们喜欢能够将东西托管在 Jamstack 式的地方,并附带所有不错的开发人员预览等。 他们喜欢热模块重新加载。 他们喜欢 Prettier 和 JSX。 他们只是喜欢它,我并不怪他们。 当你享受这种类型的开发人员体验时,回到编写 PHP 模板,需要手动刷新浏览器并维护某种手动构建过程,并不那么吸引人。

Frontity 是另一个产品,旨在将 React + WordPress 整合在一起。 Geoff 和 Sarah 分享了去年在 Vue/Nuxt 方面的实现方法

但是,无头 WordPress 会比基于与明确结构对齐的 PHP 模板的传统 WordPress 主题模型更受欢迎吗? 不会。 当然,如果 WordPress 本身支持这个想法,并提供指导、培训和文档,让开发人员更容易采用这种方法,也许会这样。 如果 WordPress 说无头架构是新的方向,我会支持它。 但这些都没有实现。 因此,在某种程度上,它是一件小众的事。

无头方式究竟有多小众?

WP Engine 是一个大型 WordPress 主机,并且有一个名为 Atlas 的东西。 并且他们的努力表明他们正在认真对待这个利基市场。 我不确定 Atlas 的全部功能,但它看起来像一个用于使用一些看起来很有趣的代码即配置来启动网站的仪表板。 无头 WordPress 的一个难题是,现在你必须处理两个网站。 你需要处理托管和运行 WordPress 的地方,以及托管和运行使用 WordPress API 的网站的地方。 也许这能将这两者结合起来。 从 Git 提交部署的功能很有吸引力,我认为这在当今的现代托管中是必不可少的。

人们使用无头 WordPress 的另一个原因是,最终结果可以是静态的,即预生成的 HTML 页面。 这意味着您的网站服务器可以高度 CDN 化,因为它实际上只是静态资产,可以立即下载。 没有用于服务器端渲染内容的 PHP 或数据库,这可能会很慢(而且公平地说,可以解决),因为它在渲染之前添加了一个过程。

什么是“WordPress 方式”的无头方式?

我会将任何构建 WordPress 网站静态版本的服务归入无头 WordPress 类别。 这是因为,最终,这些网站都在使用 WordPress API 来构建这些静态文件,就像 Gatsby 或其他任何东西一样。

这就是 Strattic 所做的。 他们为您启动一个 WordPress 网站,他们认为这是暂存环境。 您可以在那里进行 WordPress 工作,然后使用他们的发布系统将网站的静态版本推送到生产环境。 这很有说服力,因为它解决了一些其他无头 WordPress 使用方式没有解决的问题:以 WordPress 方式做事

例如,自定义 WordPress 块或插件可能会产生不只包含自定义 HTML,还包含 CSS 和 JavaScript 的输出。 想象一个“轮播”块或插件。 如果您只是从 API 获取帖子内容并将其放到页面上,那么这个轮播将无法工作。 您要么需要从其他地方提取 CSS 和 JavaScript 并包含它,要么以某种方式知道这不再是您的处理方式。 您可能会将图像作为元数据附加,在客户端获取它们,并自行实现轮播。 使用 Strattic,理论上,它将起作用,因为 HTML、CSS 和 JavaScript 仍然存在于静态网站上。 但值得注意的是,您没有使用 PHP,因此 Strattic 必须 手动构建表单集成,他们使用客户端 Algolia 进行搜索,使用 Disqus 进行评论,等等,因为没有可用的服务器端语言。

Shifter 是另一个参与者。 它类似于 Strattic,您在 WordPress 管理界面中处理您的网站,然后发布到静态网站。 我认为 Shifter 甚至在不使用时会关闭您的 WordPress 网站,这是有道理的,因为输出是静态的,没有理由运行一个带有 PHP 和 MySQL 的服务器。 作为替代方案,Shifter 有一个仅用于无头方式的 WordPress 设置,它可能始终处于运行状态,以便外部 API 使用。

思考这些东西很有趣

但是,当我这么想的时候,我意识到围绕无头 WordPress 的想法和讨论主要集中在开发人员身上。 WordPress 拥有庞大的市场,这些市场里的人们并不是开发人员。 但是,他们管理 WordPress 网站,利用插件和主题生态系统。 这很酷,WordPress 能如此出色地服务于这两个市场令人印象深刻。 我想,WordPress 网站所有者中,非开发人员的数量远超开发人员,所以仅凭这一点,在一段时间内,无头 WordPress 就不可能成为比相对小众的概念更重要的东西。 但是,你知道,如果他们想将 GraphQL 加入核心,我仍然会接受它 kthxbye。