WordPress可以作为无头CMS进行运营

总结

WordPress在内容管理服务(CMS)方面占据了最大的市场份额。从客户的角度来看,能够简单地编辑和更新功能非常具有吸引力。

然而,我对WordPress有一些个人不满。

    • PHPを使用しなければならない(構造上フロントエンドとバックエンドが分離できない)

 

    • パフォーマンスについて遅くなる傾向になる(度重なるプラグインの追加、クエリを発行する多さなど原因は多岐に渡ります)

 

    WordPress専用関数を使い過ぎてPHPと混同してしまう時がある(私だけかもしれないが)

在那个时候,我了解到WordPress有REST API功能。我觉得“如果使用它,就可以将其作为无界面CMS进行利用”,于是决定进行验证。

无头CMS的特点

作为无头CMS的特点之一,它没有具备管理内容的前端功能。

在WordPress中,它同时担任管理内容的后端和展示内容的前端的角色。然而,在无头CMS中,它主要只负责内容管理,而前端部分则交由各个开发者负责。这样做可以增加前端的灵活性。

「ヘッドレス」とは什么意思

“ヘッドレス”的意思如下所示。以下是来自流行的Headless CMS之一microCMS的博客的引用。

「ヘッドレス」中的「ヘッド」指的是视图(显示屏幕)。因为是无视图的,所以可以称其为无视图CMS。
https://blog.microcms.io/what-is-headlesscms/

验证环境

wordpress: 6.1.1
nextjs: 13.1.5

我們將在這次實際操作中使用Docker環境來啟動並驗證WordPress。

WordPress的REST API

基本的终点等内容已在以下手册中进行了记录。

 

在这里,我们将使用curl命令来进行投稿。

获取列表

您可以获取投稿列表。

curl http://localhost:8000/wp-json/wp/v2/posts

设定参数

通过指定参数,可以获取符合条件的数据。例如,通过设置search=hello,可以获取匹配hello字符串的帖子。

curl http://localhost:8000/wp-json/wp/v2/posts?search=hello

请参考以下详细说明。

 

注册

在进行数据注册或更新时需要进行认证。

驗證

首先,您需要注册应用程序密码。
然而,在当前的Docker验证环境中,无法支持SSL,因此应用程序密码的显示默认为隐藏。在这种情况下,您需要设置一个解除隐藏的过滤器。

在这里,只是将其设置为验证。实际上应该将SSL作为前提进行设置。请避免在正式环境中使用。
add_filter( 'wp_is_application_passwords_available', '__return_true' );
スクリーンショット 2023-01-27 16.16.42.png

我們將根據這個來進行Basic Auth的設置。所需的信息如下所示。

Username: WordPressのユーザー名
Password: 先程保存したパスワード文字列

尝试进行新的发表

因为准备好了,所以将发送POST请求。

curl --user "{Username}:{Password}" -X POST http://localhost:8000/wp-json/wp/v2/posts -H "Content-Type: application/json" -d '{"title": "テストタイトル", "content": "テストコンテンツ"}'

当你实际上去查看时,这篇帖子处于草稿状态。
如果想要将其改为发布状态,请在数据中添加”status”: “publish”。

更新 can be paraphrased as “更新” or “升级” in Chinese.

更新的方式和注册一样进行。不同之处在于需要在终点指定帖子的ID。

curl --user "{Username}:{Password}" -X POST http://localhost:8000/wp-json/wp/v2/posts/{post_id} -H "Content-Type: application/json" -d '{"title": "更新後のタイトルです"}'

删除

curl --user "{Username}:{Password}" -X DELETE http://localhost:8000/wp-json/wp/v2/posts/{post_id}

与前端的连接

让我们实际使用Next.js来传输数据。

在这里,我们将省略详细的代码。而且只进行列表获取处理。
可以通过以下方式使用SSR进行获取。

export const getStaticProps = async () => {
  const result = await fetch('http://localhost:8000/wp-json/wp/v2/posts')
  const res = await result.json() as WPResponse[]

  return {
    props: {
      posts: res
    }
  }
}

优点和缺点

我已经解释了基本的WordPress REST API。希望您现在明白WordPress可以作为一个无头CMS来运行。
在这里,我将总结我在验证过程中所感到的优点和缺点。

优点

充分利用无头CMS的优点,最大的优势是可以自由构建前端环境。
以前需要考虑WordPress特有的PHP模板来进行实现,但将WordPress无头化后就不再受到PHP的束缚。
例如,可以自由设置前端环境,如Next.js或Vue.js。

不利之处 (bù lì zhī chù)

无法使用画面反映系统插件。

可以使用管理画面系的WordPress插件,但不能使用画面反映系的WordPress插件。即使安装了这些插件也没有意义,因为没有使用PHP模板。

实施成本上升

如果无法使用插件,那么就必须在前端实施。这样做需要付出相当高的成本。
首先,询问是必需的。需要自己创建表单并考虑从发送到重定向的整个过程并进行实施。另外,还需要自己实现分页功能和目录。

总结

你觉得怎样呢?我认为你已经了解到WordPress可以作为无界面CMS运行。

然而,将WordPress转为无头CMS存在前面提到的优点和缺点。我认为最好根据个人的环境和条件来考虑是否进行转换。

最后

我们正在GoQSystem招募一起工作的伙伴!

如果您感兴趣,请通过以下链接进行确认。