我想知道无头的WordPress会在哪里登陆。我说的 "无头 "是指只使用WordPress管理,通过WordPress REST API而不是传统的WordPress主题结构来建立面向用户的网站。
它是......大的吗?WordPress的未来?还是相对小众?
需求在哪里?
当然,这是有需求的。我知道有很多人在做这件事。例如,Gatsby有一个 [gatsby-source-wordpress](https://www.gatsbyjs.com/plugins/gatsby-source-wordpress/?=wordpress)插件,允许你从WordPress网站上获取内容,这种方式可以消耗WordPress的REST API,并将其缓存为GraphQL,以便在React驱动的Gatsby网站上使用。在我写这篇文章的时候,这个月它已经被下载了5万9千次,总下载量为85万1千次。对于一个特定的网站建设技术来说,这是一个健康的使用量。那里的每一个用例在技术上都是无头地使用WordPress。如果你对这个感兴趣,这里有Ganesh Dahal的深入研究。
什么是去无头化和改进_到_?
Gatsby的整合为_为什么_有人会考虑无头的WordPress网站提供了一个坚实的理由。我会说到这一点。
许多人主张主要的原因是架构。它使后端与前端脱钩。它撕掉了单体。作为一个去耦合的系统,后端和前端可以独立发展。然而,随着时间的推移,我对这个想法不太感冒。例如,我认为,在这样一个无头的设置中,简单地撕掉WordPress,用另一个CMS取代它,说起来容易,做起来难。另外,我打算用WordPress的API来驱动一个网站,而且还要用一个原生的阅读应用程序,以及一些数字互联网连接的高速公路广告牌什么的,就我所知,这不是一个正在爆炸性增长的使用案例。
我认为人们为Gatsby驱动的前端使用WordPress后端的真正原因基本上是这样的:他们喜欢React。他们喜欢用组件来构建东西。他们喜欢快速的页面转换。他们喜欢能在Jamstack-y的地方托管东西,有所有漂亮的开发者预览之类的。他们喜欢热模块重载。他们喜欢Prettier和JSX。他们就是喜欢这样,我不怪他们。当你享受这样的开发者体验时,回到需要手动刷新浏览器和维护某种手工构建过程的PHP模板创作中去并不完全诱人。
Frontity是另一个希望在React+WordPress上磨练的产品。Geoff和Sarah去年在Vue/Nuxt方面分享了如何做到这一切。
但是,与传统的基于PHP模板的WordPress主题化模式相比,无头的WordPress会不会变得_更_受欢迎,因为它与明确的结构相一致?不会。好吧,如果WordPress本身倡导这个想法,并提供指导、培训和文档,使开发者更容易采用这种方法,也许它会。如果WordPress说无头架构是新的方向,我就会相信它。但这些事情都不是真的。因此,在某种程度上,它是一个小众的东西。
只是无头架构有多小众呢?
WP Engine是一个大的WordPress主机,有一个叫做Atlas的东西。而这种努力绝对看起来是他们在认真对待这个小众市场。我不是100%确定Atlas是什么,但它看起来像是一个用于启动网站的仪表盘,有一些有趣的代码即配置。在无头WordPress的房间里的大象之一是,嗯,现在你有_两个_网站要处理了。你有你托管和运行WordPress的地方,以及你托管和运行消耗WordPress API的网站的地方。也许这在某种程度上把这两件事结合起来了。Deploy-from-Git-commits的事情很吸引人,而且我认为这也是现在现代主机的桩基。
人们喜欢无头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放在核心中,我还是会接受它的,再见。