ゲーム開発とは違う話題。
WordPressをヘッドレスCMSとして使う
最近静的サイトジェネレータのAstroを使う機会が多い。
「慣れ親しんだインターフェースで記事を執筆したい」ということで、WordPress(以下WP)をヘッドレスCMSとして採用することがある。
REST APIの全件取得問題
ヘッドレスCMSを使ったJamstack構成でウェブを作る場合、大抵どこかのポイントで記事やタグなどの「全件取得」処理が必要になる。
しかしながら、WP標準のREST APIは「全件取得」ができない。
記事やタグなどの最大取得件数は100。それを超える件数を一度に取得したい場合は、functions.phpでカスタムエンドポイントを作ったりする。
記事、固定ページ、タグ、カスタム投稿タイプのそれぞれにカスタムエンドポイントを用意するところまでは、OK。面倒だが、一度実装すればその後は何も考えなくていい。
カスタムフィールドが賽の河原
Advanced Custom Fields(以下ACF)を使って、WPにカスタムフィールドを実装した場合、話が変わってくる。
自作のカスタムエンドポイントを使う場合、ACFは手間だ。カスタムフィールドを追加する度に、functions.phpに'foo' => get_field_object('foo', $post->ID)["value"]みたいなコードを1行ずつ追加しなければならない。
記事、固定ページ、カスタム投稿タイプのそれぞれにカスタムフィールドを追加している場合、実装にはそれなりの根気が必要となる。
大人しくヘッドレス用のCMSを使おう
たまに「WPはヘッドレスCMSとして凄く有望なのではないか」という言説を見かけることがある。…が、鍛錬の問題か、はたまた信心の不足か、私自身は今のところまだその感覚には至ることができていない。
CMSを使う場合、大体フィールドのカスタマイズは発生するし、そもそもWPはプラグインの互換性やセキュリティなど、REST API以外にも無視できない面倒さもある。
結局、メンテナンスコストなどを考えるとmicroCMSやContentfulのような、最初からヘッドレスなCMSを使うのが幸せよね…ということを、ここ数ヶ月実感している(n回目)。SDKも用意されている。
ちなみにローカルでヘッドレスCMSを走らせたい場合は、Directus推しです。