コンテンツにスキップ

Storefront サポートページの WordPress 固定ページ正本化

背景

Storefront のサポート関連ページは、運用担当者が問い合わせ先・FAQ・案内文を更新する対象である。 コード固定の文言や個別 route 実装にすると、WordPress CMS 上の固定ページと二重管理になり、 公開内容の差分や古い問い合わせ導線が残るリスクがある。

決定

Storefront のサポート関連ページ本文は WordPress CMS の固定ページを正本とする。 さらに Storefront の URL パス (pathname) を WordPress 固定ページの URI として 1:1 で解決し、 コード側に slug / ページ単位の固定マッピングを一切持たない。

Storefront URL WordPress 固定ページ (URI = pathname) 備考
/support URI /support (slug support) サポートトップ
/support/contact URI /support/contact (親 support の子) 問い合わせ窓口
/support/<path> URI /support/<path> その他サポート配下の固定ページ

Storefront は location.pathname をそのまま nodeByUri(uri:) に渡して WordPress 固定ページを取得し、 StaticPageContent / SafeHtml で描画する。/support/support/<child> も同一の generic loader で扱う。 サブページは WordPress 側で 親ページ support の子として固定ページを作成すれば、その URI が そのまま Storefront URL に対応する。階層の深さに依存しないよう、ルートは splat route (/support/$) で受ける。

実装要件

  • /support/contact のようなサポート配下ページに、Storefront 側の専用 hardcoded page route を追加しない。
  • slug / pathname → WordPress ページの固定マッピング表をコードに持たないlocation.pathname を WordPress URI として解決する規則だけを持つ。
  • サポート本文・問い合わせメール・外部フォーム URL・FAQ 導線など、運用で変わり得る情報は WordPress 固定ページ本文で管理する。
  • Storefront 側に残してよい責務は、URI 正規化 (末尾スラッシュ除去 / lowercase 化)、CMS 取得、breadcrumb / back button などの共通ページ chrome、HTML sanitization に限る。
  • WordPress 固定ページが存在しない場合は、空の固定文言や仮ページへ fallback せず 404 として扱う。
  • CMS ページではない app 固有ルートへの逃がしだけを例外として明示する。現状の例外は /support/maintenance/maintenance の redirect alias 1 件のみ。

運用要件

  • WordPress CMS で少なくともサポートトップの固定ページ (slug support, URI /support) を publish する。
  • support 配下に表示したい子ページは、WordPress 側で親ページに support を指定し、slug を Storefront URL 末尾と一致させて作成する (例: 親 support + slug contact → URI /support/contact)。Storefront のコード変更・再デプロイは不要。
  • 子ページの slug は 半角小文字にする (日本語タイトルから自動生成された slug は手動で ASCII へ修正する)。
  • 問い合わせ先や Google Form などの外部 URL を変更する場合、Storefront code ではなく WordPress 固定ページ本文を更新する。
  • WordPress のパーマリンク設定は pretty permalink (投稿名 / 数字ベース) にし、nodeByUri が URI を解決できる状態を維持する。
  • staging / production で固定ページの存在を揃える必要がある場合は、backup-first の運用入口を使い、CMS state を直接上書きする raw 操作を避ける。

検証

  • /support が WordPress 固定ページ (URI /support) の title / content を表示すること。
  • /support/contact が WordPress 固定ページ (URI /support/contact) の title / content を表示すること。
  • Storefront のコードに slug / pathname → ページの固定マッピング表が存在しないこと (location.pathname を URI として解決していること)。
  • /support/contact に Storefront 固定の support.contact.tsx 相当の本文が残っていないこと。
  • サポート配下ページの内部リンクは、/support/<path> として維持されること。
  • /support/maintenance のみ app ルート /maintenance へ redirect すること。