查询「敏感」数据字段
GraphQL 架构必须在公开字段和私有字段之间取得平衡,以避免在公开 API 中暴露私有信息。
默认情况下,GraphQL 架构中的所有字段只能访问公开数据。例如,posts 只能检索状态为 "publish" 的文章。
此外,我们可以向架构中添加「敏感」数据字段和输入字段,这些字段预期仅由管理员使用,针对特定的自定义端点或 persisted query 启用,同样可以获取私有数据。
例如,字段参数 posts(filter:) 将包含额外的输入字段 status,允许我们为任意用户检索未发布的文章(如状态为 "pending"、"draft" 或 "trash" 的文章)。同样,架构将公开字段 Post.status,以便查看该数据。
「敏感」数据元素列表
以下元素(及其他)默认被视为私有数据:
User:
emailrolescapabilitiesmetaKeys
Custom Posts:
statuswpAdminEditURLhasPasswordpasswordrawContentrawTitlerawExcerptmetaKeys
Comments:
statusrawContentmetaKeys
Taxonomies:
metaKeys
Custom Post Mutations:
authorBy输入
Menu Items:
rawTitle
覆盖默认配置
上述元素可以被设置为公开。
在设置页面中,每个对应的选项卡里都有一个复选框,用于配置是否将其视为「敏感」或「普通」数据:

通过架构自省查看「敏感」数据元素
在执行架构自省时,isSensitiveDataElement 属性会被添加到字段 extensions 中。要从架构中找出哪些是「敏感」数据元素,请执行以下 query:
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)时。