WordPressをヘッドレスで使うとき、最初に決めるべき5つのこと
ヘッドレス構成にすると、WordPressのテーマ機能を使わずに、好きな技術で表示側を作れる。本誌はHTML・CSS・JavaScriptだけで表示側を組んだ。自由度が上がるぶん、テーマが暗黙に引き受けていた仕事を自分たちで決める必要がある。
1. 公開してよいデータの範囲
REST APIは、初期状態でユーザー一覧(/wp/v2/users)を返す。ログインIDの推測に使われる恐れがあるので、本誌では未ログイン時にこのエンドポイントを無効にし、著者情報は別のカスタム投稿タイプで管理している。
2. HTMLをどこまで信頼するか
記事本文はHTMLとして返ってくる。表示側でinnerHTMLにそのまま入れると、万一管理画面のアカウントが乗っ取られた場合に、スクリプトを埋め込まれる危険がある。本誌では、WordPress側でwp_kses_postを通したうえで、表示側でも許可したタグだけを残す二重の処理をしている。
3. URLの形
表示側でURLを自由に決められるが、WordPressのパーマリンク設定と揃えておくと、プレビューやサイトマップの生成が楽になる。本誌は/articles/スラッグ/の形に統一した。
4. 検索エンジンへの見せ方
JavaScriptだけで本文を描画すると、検索エンジンが本文を読み取るまでに時間がかかる場合がある。本誌では記事詳細だけを事前にHTMLとして書き出し、更新時に再生成している。
5. 更新が反映されるまでの時間
キャッシュを強くかけるほど表示は速くなるが、記事の修正がすぐに反映されなくなる。本誌では一覧のAPIレスポンスを60秒だけキャッシュし、事前生成したHTMLは公開・更新のたびに作り直す仕組みにした。誤字の修正が数分以内に反映されれば、編集部の運用としては十分だった。