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,因此应用程序密码的显示默认为隐藏。在这种情况下,您需要设置一个解除隐藏的过滤器。
add_filter( 'wp_is_application_passwords_available', '__return_true' );
我們將根據這個來進行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招募一起工作的伙伴!
如果您感兴趣,请通过以下链接进行确认。