スキーマの設定
スキーマの設定「センシティブ」なデータフィールドのクエリ

「センシティブ」なデータフィールドのクエリ

GraphQLスキーマは、公開APIでプライベートな情報を露出しないよう、パブリックフィールドとプライベートフィールドのバランスを取る必要があります。

デフォルトでは、GraphQLスキーマのすべてのフィールドはパブリックデータにのみアクセスできます。たとえば、posts はステータスが "publish" の投稿のみを取得できます。

さらに、「センシティブ」なデータフィールドと入力フィールドをスキーマに追加することができます。これらは管理者のみが使用することを想定しており、特定のカスタムエンドポイントまたはpersisted queryに対して有効化され、プライベートデータも取得できます。

たとえば、フィールド引数 posts(filter:) には追加の入力フィールド status が含まれ、任意のユーザーに対して未公開の投稿(例:ステータスが "pending""draft"、または "trash" の投稿)を取得できるようになります。同様に、スキーマはフィールド Post.status を公開し、このデータを確認できるようにします。

「センシティブ」なデータ要素の一覧

以下の要素(その他を含む)は、デフォルトでプライベートデータとして扱われます:

User:

  • email
  • roles
  • capabilities
  • metaKeys

Custom Posts:

  • status
  • wpAdminEditURL
  • hasPassword
  • password
  • rawContent
  • rawTitle
  • rawExcerpt
  • metaKeys

Comments:

  • status
  • rawContent
  • metaKeys

Taxonomies:

  • metaKeys

Custom Post Mutations:

  • authorBy 入力

Menu Items:

  • rawTitle

デフォルト設定の上書き

上記の要素はパブリックに変更できます。

設定ページの各対応タブに、それぞれを「センシティブ」または「通常」として扱うかどうかを設定するチェックボックスがあります:

ユーザーのメールアドレスを「センシティブ」なデータとして扱う設定
ユーザーのメールアドレスを「センシティブ」なデータとして扱う設定

スキーマイントロスペクションによる「センシティブ」なデータ要素の確認

スキーマイントロスペクションを行う際、isSensitiveDataElement プロパティがフィールド extensions に追加されます。スキーマ内の「センシティブ」なデータ要素を確認するには、次のクエリを実行してください:

query ViewSensitiveDataElements {
  __schema {
    types {
      name
      fields {
        name
        extensions {
          isSensitiveDataElement
        }
        args {
          name
          extensions {
            isSensitiveDataElement
          }
        }
      }
      inputFields {
        name
        extensions {
          isSensitiveDataElement
        }
      }
      enumValues {
        name
        extensions {
          isSensitiveDataElement
        }
      }
    }
  }
}

その後、結果の中から "isSensitiveDataElement": true のエントリを検索してください。

エンドポイントへの「センシティブ」なデータ要素の追加

「センシティブ」なデータ要素をスキーマに追加する設定は、優先順位の順に次のように行えます:

✅ スキーマ設定で定義された、カスタムエンドポイントまたはpersisted query固有のモード

「センシティブ」なデータ要素をスキーマに追加、スキーマ設定で設定

✅ 設定で定義されたデフォルトモード

スキーマ設定の値が "Default" の場合、設定で定義されたモードが使用されます:

設定内のスキーマ設定における「センシティブ」なデータ要素の設定
設定内のスキーマ設定における「センシティブ」なデータ要素の設定

使用するタイミング

静的ウェブサイトの構築時やローカルのWordPressインスタンスからデータを取得する場合(つまり公開APIではない場合)など、プライベートな情報の公開が許可されている場合に使用してください。