ContentfulでPublishボタンが押せない原因と解決方法 — ロケール設定の落とし穴
はじめに Contentfulで多言語サイトを構築中、運用担当者から「新規ページを作成してもPublishボタンがアクティブにならない」という報告を受けました。既存ページの更新は問題なくできるのに、新規作成だけができないという状況です。 本記事では、原因の特定プロセスと解決方法を紹介します。 環境 Contentful(ヘッドレスCMS) ロケール: 日本語(ja、デフォルト)+ 英語(en) Next.js + Contentful Delivery API でフロントエンドを構築 症状 新規にPageエントリーを作成し、必要な情報をすべて入力しても Publishボタンがグレーアウト してクリックできない 既存ページの更新(タイトルや本文の変更)は問題なくPublishできる Draft保存は正常に動作する 原因の切り分け 1. コンテンツタイプのバリデーションを確認 まず、pageコンテンツタイプのフィールド定義を確認しました。 title: Symbol, required: true, localized: true slug: Symbol, required: true, localized: false body: RichText, required: false, localized: true bodyMarkdown: Text, required: false, localized: true titleとslugが必須ですが、どちらも入力済み。slugのバリデーション(^[a-z0-9]+(?:-[a-z0-9]+)*$)にも違反していませんでした。 2. ユーザー権限を確認 Management APIでスペースメンバーシップを確認しました。 curl -s -H "Authorization: Bearer $TOKEN" \ "https://api.contentful.com/spaces/$SPACE_ID/space_memberships" 報告者はAdmin権限を持っており、権限の問題ではありませんでした。 3. APIから直接Publishを試行 — 原因特定 UIでは原因がわからなかったため、Management APIから直接Publishを試みました。 これが決め手になりました。 curl -s -X PUT \ -H "Authorization: Bearer $TOKEN" \ -H "X-Contentful-Version: 13" \ "https://api.contentful.com/spaces/$SPACE_ID/environments/master/entries/$ENTRY_ID/published" レスポンス: ...






